首先要明确在xml文件中,单位通常设置为dp,而通过Java代码对布局进行控制时,LayoutParams的成员width和height都以px为单位的。因此存在不统一,需要进行转换。

下面给出dp与px之间的转换公式:

px = dp * (dpi / 160)

dp = px / (dpi / 160)

dpi值的获取通过如下方式获得:

metrics =new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

dpi的值就等于:metrics.densityDpi

160通过如下方式获得:

160=DisplayMetrics.DENSITY_DEFAULT

最后给一个具体的例子,从dp转到px,281dp等于多少px???

metrics =new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

(281 * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐