dp:就是dip(device independent pixels)设备独立像素,与密度无关的像素。一种基于屏幕密度的抽象单位。在每英寸160点(屏幕密度为160)的显示器上,1dp=1px;
sp:与刻度无关的像素。主要用于定义字体的大小,而从来不再layout上使用。与dp相似,但是可以根据用户的字体大小首选项进行缩放,即sp除了与密度无关外,还与scale(缩放)无关。当屏幕密度为160时,1dp=1sp=1px;
px:屏幕的实际像素。一般不用它作为单位,因为它会在不同的设备显示相同的效果。
in:英寸。
mm:毫米。
pt:磅。1/72英寸。
dp和sp能够自动的随屏幕的变化而变化。因此,为了使用户界面能够在现在和将来的显示器类型上正常的显示,建议始终使用sp作为文字大小的单位,将dp作为其他元素的单位。
px和dp相互转换代码:
package com.hujl.util;
import android.content.Context;
public class DensityUtil {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}