7

我完全被 Android 上的下降弄糊涂了。

我从参考资料中了解到 dp 值的基数是 160。那么,宽度 80dp 不应该等于屏幕宽度为 50% 的视图吗?在我的 Nexus One 上,dp 的宽度看起来大约是 300dp。

我在这里想念什么?

提前谢谢

4

4 回答 4

16

"dp" == "Density-independent Pixels"(这也是为什么它早先被称为 "dip",尽管这些天我更喜欢使用 "dp"。)

把它想象成其他单位——“in”(英寸)、“mm”(毫米)等。它允许您提供根据屏幕密度缩放的尺寸。

我们将 mdpi 定义为基本密度,因此 mdpi 屏幕上的“10dp”将产生正好 10 个像素。在 hdpi 屏幕上,它将产生 15 个像素,因为 hdpi 是 1.5*mdpi。

请注意,尽管各种密度的常数与 DPI 相似(mdpi 为 160 等),但密度并不完全是 DPI。它是一个针对屏幕 dpi 进行调整的抽象缩放因子,但并不试图准确地反映它。(您可以使用“in”、“mm”等来表示确切的尺寸,但 99.9% 不是您想要的,所以坚持使用“dp”。)这大大简化了每个人的生活,因为您不需要处理许多 Android设备的 UI 空间量略有不同,因为它们的屏幕 DPI 略有不同。此外,设备制造商可以选择其设备的密度以实现所需的 UI——例如,三星 Tab 使用的密度比实际 DPI 大很多,从而导致整体更大的 UI。

于 2011-01-16T22:01:18.657 回答
5

每英寸160 点。所以 80dp 大约是 1/2 英寸。

于 2011-01-16T20:53:30.050 回答
2

我不完全理解你的问题,但我建议你看看这个,如果你还没有的话。

http://developer.android.com/guide/practices/screens_support.html

像素 = dps * (密度 / 160)

于 2011-01-16T18:57:16.687 回答
0

与密度无关的像素(简称:dp)是一个虚拟像素单位,将在您的应用程序运行时确定。

Formala:1 dp = 160 dpi 屏幕上的 1 像素。所以 160 dpi 是系统的基线密度。

dp 单位到屏幕像素的转换非常简单。实际设备像素 (px) = dp (1) * (dpi (of the device) / 160(baseline) ) 为简单起见:px = dp * (dpi / 160)

示例:如果 240 dpi 设备启动您的应用程序,则 1 dp 等于 1.5 个实际设备像素。

结论:Dp 自动处理任何缩放到更大或更小的设备。对像素进行硬编码的时代已经结束。DP 确保在不同的屏幕密度上进行适当的缩放。

于 2017-04-15T11:57:39.883 回答