Answers:
您必须使用显示比例因子将其从dps转换为像素。
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
dp
为px
?谢谢。
我知道这是一个老问题,但是我发现进行转换的方法更加简洁。
爪哇
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65, getResources().getDisplayMetrics());
科特林
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65f, resources.displayMetrics)
65
上面的是你想转换到PX的DP值
根据您的要求,还有替代解决方案。看来您在编译时就知道dp中的尺寸,因此可以在资源中添加一个dimen条目。然后,您可以查询dimen条目,它将在此调用中自动转换为像素:
final float inPixels= mActivity.getResources().getDimension(R.dimen.dimen_entry_in_dp);
而且您的dimens.xml将具有:
<dimen name="dimen_entry_in_dp">72dp</dimen>
扩展这个想法,您可以简单地将1dp或1sp的值存储为dimen条目,并查询该值并将其用作乘数。使用这种方法,您可以将代码与数学知识隔离开,并依靠库来执行计算。