为什么 displayMetrics.density 是错误的?

问题描述 投票:0回答:2

在我的 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 个与密度无关的像素,使其看起来更具视觉吸引力。

android pixel dpi density-independent-pixel pixel-density
2个回答
2
投票

但是

density
实际上是
float
的一种:

公众持股密度

[...] 此值并不完全遵循实际屏幕尺寸(由

xdpi
ydpi
给出)
,而是用于根据显示 dpi 的总变化逐步缩放整个 UI 的尺寸。

https://developer.android.com/reference/android/util/DisplayMetrics#density


0
投票

查看Android的官方dp-px转换公式——注意:Android上的

1dp
1dp
不同,例如在 Windows 上——我不确定您的计算是否正确。无论如何,正如神圣的文件所说

永远不要硬编码这个等式

使用

deriveDimension()
px
转换为
dp

对于从

dp
px
的转换,使用 applyDimension() 对于这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.