Android dp、px互转


    Device Independent Pixels(设备独立像素),Android开发中常用dp来适配手机。不同的设备有不同的显示效果,当1英寸屏幕上有160个像素点(px)时,此时1dp=1px=1dpi。一般为了支持WVGA、HVGA和QVGA推荐使用dp,不依赖像素。


    Pixels,即像素,1px代表屏幕上的一个物理像素点。

dp转px

context.getResources().getDisplayMetrics().density可以得到在一个dpi区域中px的密度

1
2
3
4
5
//  dp值 x 区域密度 + 精度丢失值 = px值
public int dpToPx(double dp,Context context){
int px = (int)(dp * context.getResources().getDisplayMetrics().density + 0.5f);
return px;
}

px转dp

1
2
3
4
5
//  px值 / 区域密度 + 精度丢失值 = dp值
public int pxToDp(double px,Context context){
int dp = (int)(px/context.getResources().getDisplayMetrics().density + 0.5f);
return dp;
}