android 各Display转化(一)
2016-08-05 14:46
447 查看
Android系统中,默认的单位是像素(px)。就是说,在没有明确说明的情况下,所有的大小设置都是以像素为单位。
如果以像素设置大小,会导致不同分辨率下出现不同的效果(因为屏幕分辨率与屏幕的大小没有关联)。那么,如何将应用中所有大小的单位都设置为’dp’呢?
大家还在为 android px 和 dip,dp; px 和 sp 的相互转化而烦恼吗? 今天我就来解决大家这个烦恼,一个简单的转化工具类,从此再也不要烦恼了。
import android.content.Context;
public class DisplayUtil {
/**
* 将px转为dip或dp
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return getDivRound(pxValue, scale);
// return (int)(pxValue / scale + 0.5f);
}
/**
* 将dip或dp转为px
* @param context
* @param dipValue
* @return
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return getMultRound(dipValue, scale);
// return (int)(dipValue * scale + 0.5f);
}
/**
* 将px转为sp
* @param context
* @param pxValue
* @return
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return getDivRound(pxValue, fontScale);
// return (int)(pxValue / fontScale + 0.5f);
}
/**
* 将sp转为px
* @param context
* @param spValue
* @return
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return getMultRound(spValue, fontScale);
// return (int)(spValue * fontScale + 0.5f);
}
/**
* 乘法运行并四舍五入
* @param x
* @param y
* @return
*/
public static int getMultRound(float x, float y){
return Math.round(x*y);
}
/**
* 除法运行并四舍五入
* @param dividend 被除数
* @param divisor 除数
* @return
*/
public static int getDivRound(float dividend, float divisor){
return Math.round(dividend/divisor);
}
}
如果以像素设置大小,会导致不同分辨率下出现不同的效果(因为屏幕分辨率与屏幕的大小没有关联)。那么,如何将应用中所有大小的单位都设置为’dp’呢?
大家还在为 android px 和 dip,dp; px 和 sp 的相互转化而烦恼吗? 今天我就来解决大家这个烦恼,一个简单的转化工具类,从此再也不要烦恼了。
import android.content.Context;
public class DisplayUtil {
/**
* 将px转为dip或dp
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return getDivRound(pxValue, scale);
// return (int)(pxValue / scale + 0.5f);
}
/**
* 将dip或dp转为px
* @param context
* @param dipValue
* @return
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return getMultRound(dipValue, scale);
// return (int)(dipValue * scale + 0.5f);
}
/**
* 将px转为sp
* @param context
* @param pxValue
* @return
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return getDivRound(pxValue, fontScale);
// return (int)(pxValue / fontScale + 0.5f);
}
/**
* 将sp转为px
* @param context
* @param spValue
* @return
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return getMultRound(spValue, fontScale);
// return (int)(spValue * fontScale + 0.5f);
}
/**
* 乘法运行并四舍五入
* @param x
* @param y
* @return
*/
public static int getMultRound(float x, float y){
return Math.round(x*y);
}
/**
* 除法运行并四舍五入
* @param dividend 被除数
* @param divisor 除数
* @return
*/
public static int getDivRound(float dividend, float divisor){
return Math.round(dividend/divisor);
}
}
相关文章推荐
- Android display 架构分析
- [收集]android Resource ID,Display用法
- Android display
- (转)Android display架构分析(六)
- Android Display System --- Surface Flinger 收藏
- (转)Android display架构分析(七)
- Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等
- (转)Android display架构分析(三)
- (转)Android display架构分析(五)
- Android forward display screen(pages), by intent.
- Android display架构分析
- Android Display System --- Surface Flinger
- 转载:Android Display架构分析--侧重高通平台
- Android Display System Surface Flinger
- Android Display System
- Android display架构分析
- android----Bitmap / Drawable / byte[] 之间相互转化
- (转)Android display system introduce(Qualcomm 8x60 platform)(二、SW架构--1)
- (转)高通Android平台下关于display部分的几个关键问题
- 快速转化J2ME程序为Android程序