Android DP转PX的换算,160 dp在mdpi上总是等于160 px吗?

3
我在http://developer.android.com/guide/practices/screens_support.html的相关文档中遇到了一些令人困惑的歧义,而且我找不到一个能够澄清这个问题的stackoverflow答案。
我很清楚文档中所说的内容:
密度无关像素(dp)相当于160dpi屏幕上的一个物理像素,这是系统默认的“中等”密度屏幕基线密度。在运行时,系统会根据实际使用的屏幕密度自动处理dp单位的任何缩放。将dp单位转换为屏幕像素很简单:px = dp * (dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。您应该始终使用dp单位来定义应用程序的UI,以确保在具有不同密度的屏幕上正确显示您的UI。
问题在于他们在公式中对“dp”的定义是什么。根据页面下方的图形,似乎mdpi级别设备的“实际密度”涵盖了一系列值,大约在120到200之间。这是否意味着160 dpi对于mdpi级别设备可以映射到120到200个像素之间的任何位置?还是说mdpi级别设备总是将160 dpi转换为160个像素?

我可能没有理解你的问题,但是“密度无关像素”只是一个术语,用于通过进行一些数学计算来确定屏幕上物品的物理尺寸(实际大小)的过程。这是设计和开发的优越方式。大多数人只是不理解或者不是程序员,所以他们还没有采用这种方法。 - moot
范围是处理不同密度的建议方法,但您需要知道如何转换为dp。转换数字160是您始终使用的数字。您可以使用任何数字,它都可以工作,但我们都“同意”使用160,以便我们可以共享代码。 - moot
1个回答

1
根据Dianne Hackborn的这篇文章,"兼容"的Android设备不能有非标准密度。理论上,Android可以缩放到任何密度并显示其UI以匹配屏幕的精确密度。实际上,我们没有这样做--我们定义了一些特定的密度值,并要求兼容设备坚持使用它们。这是为什么呢?首先是为了帮助开发人员。UI设计师倾向于制作漂亮干净的图形;这些图形被绘制为位图,给设计师一个支持的目标位图大小集合而不是无限变化会让事情变得简单得多。所以,Android定义了几个主要的密度桶,称为ldpi(约120dpi),mdpi(160dpi),hdpi(240dpi)和xhdpi(320dpi)。制造商可以选择适合他们设备的密度,只要它在缩放密度后的屏幕尺寸达到平台允许的最小尺寸即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接