是否可以在代码中指定像素单位。
我的意思是,假设我有一个布局,并且我希望大小为 20dp,那么有什么方法可以在不编写布局 xml 的情况下做到这一点
在一个视图中:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);
当然,在 Activity 中,您可以省略getContext()
.
从缩放像素转换(sp
)到像素,只需使用metrics.scaledDensity
代替metrics.density
.
编辑:作为@Santosh 的回答指出,您可以使用实用程序类做同样的事情TypedValue:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
int pixels = Math.round(fpixels);
For sp
, 代替TypedValue.COMPLEX_UNIT_SP
for TypedValue.COMPLEX_UNIT_DIP
.
在内部,applyDimension()
与我上面的代码执行完全相同的计算。使用哪个版本取决于您的编码风格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)