Android DP到PX的转换,是mdpi上160 dp总是160 px?

时间:2014-06-27 19:50:01

标签: android android-screen-support

我对http://developer.android.com/guide/practices/screens_support.html的一些不幸的歧义感到迷茫,我无法找到澄清问题的stackoverflow答案。

我很清楚文档声称的内容:

  

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

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

1 个答案:

答案 0 :(得分:1)

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

  

理论上,Android可以扩展到任何密度并显示其UI   匹配屏幕的精确密度。在实践中,我们不这样做 -   我们已经定义了一些我们支持和要求的特定密度   兼容设备坚持使用。这是为什么?

     

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

     

(...)

     

因此Android定义了一些密度值的主要设备   可以使用,称为ldpi(约120dpi),mdpi(160 dpi),hdpi(240 dpi),   和xhdpi(320 dpi)。制造商可以选择密度   适合他们的设备,只要它导致屏幕   (在缩放密度之后)在允许的最小屏幕尺寸范围内   平台。