Android 没能提供直接获取dimen.xml文件中某个值的方法,调用上述的三个方法得到的值,其实是经过乘以屏幕密度的,是value*density(屏幕密度)的像素值(pixel value),所以取得的值需要再经过一步转化,才能得到写在xml文件中的目标dp。
像素值转换的方法很多,从网上随便即可找到:
/**
* 将px值转换为dip或dp值,保证尺寸大小不变
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变
* @param dipValue
* @param scale
* @return
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * sca