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 * scale + 0.5f);
}
/**
* 将px值转换为sp值,保证文字大小不变
* @p

本文探讨了Android中获取dimen.xml资源值的问题,指出getDimension、getDimensionPixelSize和getDimensionPixelOffset返回的是经过屏幕密度调整的像素值。要得到原始的dp值,需要进行额外的转换计算。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



