您的位置:首页 > 移动开发 > Android开发

android:dp,px,sp概念及之间转换

2016-04-14 23:19 561 查看

概念:

px(pixels):屏幕的像素点

dpi(dot per inch):屏幕像素密度,每英寸多少像素

dp/dip(device independent pixels):设备独立像素,一个基于density的抽象单位。如果在一个160dpi的屏幕,1dp=1px。一般作为除文本以外的单位

sp(scaled pixels):同dp类似,一般作为文本的单位



转换

如果屏幕密度为160时,这时1dp = 1px

转换公式:

dp = px / (dpi / 160); 若dpi = 160;即dp = px

px = dp * (dpi / 160);

px单位转换为dp单位

/**
* 将px值转换为dp值
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}


px单位转换为sp单位

/**
* 将px值转换为sp值
*/
public static int px2sp(Context context, float pxValue) {

final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;

return (int) (pxValue / fontScale + 0.5f);
}


dp单位转换为px单位

/**
* dp转成px
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android