2014-06-27 41 views
3

我迷失在关于http://developer.android.com/guide/practices/screens_support.html的一些不幸的含糊之处,我无法找到澄清问题的计算器答案。Android DP到PX转换,160 dp总是160 px上mdpi?

我很清楚的文档所宣称:

密度无关的像素相当于一个物理像素160 dpi屏幕,这是一种“介质由系统假定的基线密度上“密度屏幕。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单位的任何缩放比例。将dp单位转换为屏幕像素很简单:px = dp *(dpi/160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。定义应用程序的用户界面时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示您的用户界面。

问题是他们对'dp'的定义是在那个公式中。基于页面下方的图形,似乎mdpi级设备的“实际密度”跨越大约120到大约200的值。这是否意味着160 dpi可映射到120到200之间的任何位置200像素的mdpi级设备?或者,一个mdpi类设备总是将160 dpi转换为160像素?

+0

我可能会错过你的问题,但......密度独立像素仅仅是一个术语,用于了解屏幕上物品的物理尺寸(实际尺寸)。这是设计和开发的最佳方式。大多数人只是不明白,或者不是程序员,所以他们还没有做到。 – moot

+0

范围是处理不同密度的建议方法,但您需要知道如何转换为dp。转换号码160是您始终使用的号码。你可以使用任何你想要的数字,它会工作,但我们都“同意”使用160,所以我们可以共享代码。 – moot

回答

1

根据this post from Dianne Hackborn,确实如此。 “兼容”的Android设备不能有一个非标准密度:

理论上那么的Android可以扩展到任何密度并显示其用户界面 比赛画面的确切密度。在实践中,我们不这样做 - 我们已经定义了一些我们支持的特定密度,并要求 兼容设备坚持它们。为什么是这样?

第一个原因就是帮助我们的开发者。 UI设计师倾向于 喜欢制作漂亮干净的图形;这些图形绘制为位图 ,并为设计人员提供了一小组目标位图大小,以支持 而不是无限变化,这使得它们变得更加简单。

(...)

因此Android限定密度值即设备 可以使用,称为LDPI(约120DPI),MDPI(160 DPI),HDPI(240 DPI)的几个主要水桶, 和xhdpi(320 dpi)。制造商可以选择适合其设备的密度 ,只要它在屏幕上显示 (密度缩放后)在平台的最小允许屏幕尺寸 以内即可。