为何displayMetrics.density值异常?Pixel 7设备dp计算问题
解决Pixel 7获取正确dp值的问题
首先明确:displayMetrics.density = 2.625是系统提供的正确值,它对应Pixel 7的系统密度设定(420dpi,因为2.625 = 420 / 160,160dpi是Android的基准密度)。
你遇到的非整数结果,是因为直接用像素值除以密度的计算方式本身就可能产生小数。Android系统已经提供了直接获取整数dp尺寸的API,无需手动计算:
- 调用
displayMetrics.widthDp可以直接得到屏幕宽度的整数dp值,对于Pixel 7来说,这个值就是412,完全符合你的视觉预期。
如果一定要手动计算接近整数的结果,也可以通过Math.round(displayMetrics.widthPixels / displayMetrics.density)对结果取整,同样会得到412。
另外,你推测的2.62135922是1080 / 412的反向推导值,属于适配场景下的“凑整数值”,并非系统实际的密度参数,系统真实密度值依然是2.625。
内容的提问来源于stack exchange,提问作者zeus
相关产品推荐
相关产品推荐

