gpt4 book ai didi

Android dp 单位与现实世界不匹配

转载 作者:行者123 更新时间:2023-11-29 15:58:09 25 4
gpt4 key购买 nike

我正在测试 Samsung Galaxy Note 3根据文档,它是 1080 x 1920 像素(~386 ppi 像素密度)。我想弄清楚 dp 中的屏幕宽度 是多少,以便我可以正确应用并检查 new size qualifiers .

我用一把好的 'ole 尺子测量了屏幕宽度(纵向)= 71mm = 2.8 英寸1080/2.8 = 386 ppi。太好了,这与规定的密度相符。

我正在尝试计算屏幕宽度为多少 dp 单位。

dp = px / (dpi / 160) from here
= 1080 / (386 / 160) = 1080 / 2.4125 = 447.7 dp

如果我这样做:

<TextView
android:id="@+id/density_test"
android:layout_width="447dp"
android:layout_height="wrap_content"
android:background="#ffff0000"
android:text="DENSITY TEST 447dp" />

然后在我的 Galaxy Note 3 上,这个 View 应该几乎正好是屏幕的宽度。 但事实并非如此,它要宽得多

所以我将上面的 View 设置为 layout_width="300dp",用我的尺子测量了它的宽度,并根据这个测试推断出以 dp 为单位的实际屏幕宽度:

300dp = 59mm

Total screen width is 71mm

so extrapolating screen width in dp = (71 / 59) * 300 = 361dp

361dp != 447.7dp

这是怎么回事?我觉得我一定是在做一些愚蠢的事情。

编辑:我尝试将布局文件放入/res/layout-xhdpi 但没有效果。我想也许它正在通过 xhdpi/mdpi 缩放它,因为我在默认的/res/layout 目录中有 xml。

enter image description here

最佳答案

实际的像素大小是根据dp计算出来的,但不如公式dp = px/(dpi/160)那么精确。事实上,它首先确定屏幕密度(ldpp、mdph、hdpi、xhdpi、xxhdpi、xxxhdpi)并使用该密度从 {0.75、1.0、1.5、2.0、3.0、(4.0)} 中获得一个比率。

在您的情况下,系统将 386dpi 视为 xxhdpi,因此它通过乘以 3.0 来计算该值,而 360dp 将正好填满屏幕的宽度 (1080p)

关于Android dp 单位与现实世界不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26643671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com