我对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像素?
答案 0 :(得分:1)
根据this post from Dianne Hackborn,情况确实如此。 “兼容”Android设备不能具有非标准密度:
理论上,Android可以扩展到任何密度并显示其UI 匹配屏幕的精确密度。在实践中,我们不这样做 - 我们已经定义了一些我们支持和要求的特定密度 兼容设备坚持使用。这是为什么?
第一个原因只是为了帮助我们的开发人员。 UI设计师倾向于 喜欢制作漂亮干净的图形;这些图形被绘制为位图, 并为设计人员提供一小组目标位图大小以支持 而不是无限的变化使事情变得更加简单。
(...)
因此Android定义了一些密度值的主要设备 可以使用,称为ldpi(约120dpi),mdpi(160 dpi),hdpi(240 dpi), 和xhdpi(320 dpi)。制造商可以选择密度 适合他们的设备,只要它导致屏幕 (在缩放密度之后)在允许的最小屏幕尺寸范围内 平台。