Android 为什么Eclipse认为毫米单位不准确

Android 为什么Eclipse认为毫米单位不准确,android,eclipse,Android,Eclipse,我想知道为什么Eclipse会显示: 我认为由于“密度桶”的原因,“dp”很容易不准确~ 与“mm”和“in”(显示相同的警告)相比,“dp”单位是最精确的单位(在屏幕上1英寸实际上是1英寸) 有趣的是,“pt”并没有让eclipse显示这样的警告 我认为“mm”“in”和“pt”的行为方式相同(它们非常精确,因为不依赖于密度桶) 非常感谢您的回答。您的回答是正确的,因为桶的密度,dp不是完全准确的。一个dp的大小可以是设备上一个dp大小的88%到117%,其中真实dpi与桶dpi完全匹配,具

我想知道为什么Eclipse会显示:

我认为由于“密度桶”的原因,“dp”很容易不准确~

与“mm”和“in”(显示相同的警告)相比,“dp”单位是最精确的单位(在屏幕上1英寸实际上是1英寸)

有趣的是,“pt”并没有让eclipse显示这样的警告

我认为“mm”“in”和“pt”的行为方式相同(它们非常精确,因为不依赖于密度桶)


非常感谢您的回答。

您的回答是正确的,因为桶的密度,dp不是完全准确的。一个dp的大小可以是设备上一个dp大小的88%到117%,其中真实dpi与桶dpi完全匹配,具体取决于真实dpi和桶dpi之间的差异有多大。如果比率大于该比率,则应将设备放入下一个/上一个桶中

正如您所说,mm、inch和pt更精确,因为它们基于真实的物理dpi,而不是桶dpi

然而,市场上有一些设备向Android(和)报告了不正确的物理dpi,因此,在这些设备上使用mm、in或pt的任何东西都会得到错误的尺寸

报告不正确物理dpi的设备示例包括:

这就是为什么Eclipse说这些单元不能在所有设备上准确工作的原因。pt没有警告的原因可能是添加此警告的开发人员忘记了pt,或者从未在有问题的设备上测试过


有关同一主题的更多详细信息,请参阅我对问题的回答

注意,消息中说并非所有设备上的毫米都准确。一毫米是宇宙中任何一个离黑洞不太近的地方的一毫米,但是便宜的(咒骂性的)设备可能无法精确测量。问题出在应用程序运行的潜在设备上,而不是代码上。可能是因为毫米与设定的像素数不直接对应。像素到毫米的数量取决于屏幕密度,并且取决于设备,最终可能会得到分数像素或类似的胡说八道。@Renan但这仍然是误导性的,因为它是最精确的单位,使用“dp”(因为密度桶)比使用“mm”更可能导致不准确因为设备软件/硬件有问题。@bluesm我不这么认为,请阅读thegrinner的评论。如果你深入到这一点,你最终会陷入塞曼蒂克斯迷宫。最后,编译器会给你一个警告,而不是一个错误,所以你可以使用国际单位制,如果这是你的怪癖所在的话。@thegrinner,它会对它进行取整,然后它仍然是最精确的。顺便说一句为什么“pt”不显示警告?