Android 基准 dpi 无助于计算屏幕百分比

Android baseline dpi does not help calculate screen percentage

如果布局具有 android:layout_width="160dp",它会在 hdpi Nexus S 模拟器上呈现一半的屏幕。

我原本希望 Nexus 4 模拟器 (xhdpi) 和 Nexus 5 模拟器 (xxhdpi) 能够相应地缩放,并向我展示一个占据半个屏幕的布局,但它们没有。他们不到一半(2/5 左右)。

我错过了什么?我认为 XML 环境总是使用特定的屏幕,因此我可以从那里进行计算。

如果 320dp = 480px / (240dpi / 160) 并且 Nexus S 是 hdpi(高)~240dpi。 160dp 是屏幕的一半是有道理的。

那么,Nexus 5 是 xxhdpi(超超高)~480dpi,具有高清分辨率。

所以,1080px / (480dpi / 160) = 360dp!

什么?为什么?!

当我想分割我的屏幕资源时,我应该避免使用 dp 吗?靠体重和格子?

事实上,正如 Budius 评论的那样,您不能依赖 dp 将屏幕分成多个部分,因为它只会帮助您对尺寸有一个相对的了解,从而减少您需要计算的重新调整尺寸的数量,但不能有效地替换所有单位大小,例如原始百分比的作用。

使用权重是正确的方法。