在我的 Pixel 7 设备上,我想知道我有多少密度无关像素 (dp)。所以,我使用这个公式:
displayMetrics.widthPixels / displayMetrics.density
但是,我有一个问题,因为
displayMetrics.widthPixels = 1080
(没关系)和displayMetrics.density = 2.625
。当我计算 1080 / 2.625 时,它等于 411.428571 个与密度无关的像素,这不是整数。似乎 displayMetrics.density = 2.625 可能不正确,因为有一小部分与密度无关的像素是不寻常的。
如何获得 displayMetrics.density 的正确值?我想它是 2.62135922,这将导致 412 个与密度无关的像素,使其看起来更具视觉吸引力。
但是
density
实际上是float
的一种:
公众持股密度
[...] 此值并不完全遵循实际屏幕尺寸(由
和xdpi
给出),而是用于根据显示 dpi 的总变化逐步缩放整个 UI 的尺寸。ydpi
https://developer.android.com/reference/android/util/DisplayMetrics#density
查看Android的官方dp-px转换公式——注意:Android上的
1dp
与1dp
不同,例如在 Windows 上——我不确定您的计算是否正确。无论如何,正如神圣的文件所说
永远不要硬编码这个等式
deriveDimension()
将px
转换为dp
。
对于从
dp
到 px
的转换,使用 applyDimension() 对于这种情况。