dp是虚拟像素,在不同的像素密度的设备上会自动适配
在320x480分辨率,像素密度为160,1dp=1px
在480x800分辨率,像素密度为240,1dp=1.5px
px(像素):屏幕上的点。
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。
/*
* 计算机公式:1dp*像素密度/160 = 实际像素数
** 像素密度/160=density(逻辑密度)
*/
public class DensityUtils {
/**
* dp转换成px
* @param context
* @param dpValue
* @return
*/
public static int dp2px(Context context,float dpValue){
float density = context.getResources().getDisplayMetrics().density;
return (int)(dpValue*density+0.5f);
}
/**
* px转换成dp
* @param context
* @param pxValue
* @return
*/
public static int px2dp(Context context,float pxValue){
float density = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/density+0.5f);
}
}