使用dip的目的是什么?

时间:2013-10-01 21:55:59

标签: android

我是Android开发的新手,我正在努力使我的应用程序适应每个分辨率。我最近听说过倾角的概念,但我没有达到这个单位的目的。我知道它允许显示具有相同物理尺寸的东西,无论屏幕分辨率如何。

但问题是它不适用于不同的屏幕密度。我的意思是,如果我定义宽度为80dip的图像,则结果在160dpi屏幕和320dpi屏幕上的结果将不同。因此,如果我每次都有代码来调整组件到设备,我就不会真正达到这个单元的目的。

如何在xml中定义布局(没有代码,不应该要求:/),以便每个设备上的视图相同(或差不多)?

我真的不明白为什么不能在布局(xml)中使用百分比而不是那种单位。

非常感谢你的帮助。

PS:对不起我的英文:(

1 个答案:

答案 0 :(得分:3)

倾角(也称为dp)的想法是,无论显示器的物理像素密度如何,都具有相同大小的虚拟像素。

  

1dp = 160像素/英寸的1像素(中密度显示-mdpi)

在较高的像素密度下,1dp是一个以上的物理像素,在较低的密度下,一个物理像素的大小需要超过1dp。

如果您以px指定尺寸,则指定物理像素,而在高密度设备上,相同的对象将显得更小。

图像通常根据找到它们的资源文件夹进行缩放。如果将.png文件放在/res/drawable中,系统会假定它的大小正确为mdpi - 显示密度为160像素/英寸。如果实际显示恰好是240像素/英寸(hdpi),则系统会在加载图像时自动将图像缩放1.5倍(= 240/160)。结果是图像将在所有屏幕密度上以相同的物理尺寸显示。

您可以使用特定于密度的资源文件夹(/res/drawable-mdpi/res/drawable-hdpi等)为不同的密度提供不同的图形;这通常在系统缩放不可接受地降低图像质量时完成。您还可以将图形放在/res/drawable-nodpi中以抑制此缩放。

有关详细信息,请阅读教程Supporting Different Densities