我们的UI基于1920x1080分辨率给的尺寸标注,但是在安卓开发中大家一般都使用dp、sp来标注界面尺寸,所以需要一个dp与sp的转换公式。
一开始参考的的这篇文章:关于Android开发中px、dip、dp、sp等单位的概念和转换关系(http://blog.csdn.net/watt520/article/details/9667079)
然后得到下面这两个公式:
public static int dip2px(Context mContext, float dp) {
float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
public static int px2dip(Context mContext, float px) {
float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
对于dp和sp都用一样的公式,算出来的像素与dp之间的比例2.625,修改界面尺寸之后发现整体比效果出大了不少,有10%以上的差距。
后来找到了如下这张不同分辨率下的px与dp转换关系对照表,那么我们的1920x1080分辨率对应的比例就是3,使用该比例之后发现和效果图基本一致,完美。
—————完—————