1

我是 Android 开发的新手,我正在尝试使我的应用程序适应各种分辨率。我最近听说了 dip 的概念,但我不明白这个单元的目的。我知道无论屏幕分辨率如何,它都允许显示具有相同物理尺寸的东西。

但问题是它不适用于不同的屏幕密度。我的意思是,如果我定义一个宽度为 80dip 的图像,那么在 160dpi 屏幕和 320dpi 屏幕上的结果将不一样。因此,如果我每次都需要编写一些代码以使组件适应设备,那么我并没有真正理解这个单元的目的。

我如何在 xml 中定义布局(没有任何代码,它不应该是必需的:/),以便这个视图在每个设备上都是相同(或几乎)?

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

非常感谢您的帮助。

PS:对不起我的英语:(

4

1 回答 1

3

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

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

在较高的像素密度下,1dp 不止一个物理像素,而在较低的密度下,需要超过 1dp 才能成为一个物理像素的大小。

如果您以 px 为单位指定大小,则您指定的是物理像素,并且在高密度设备上,相同的对象会显得更小。

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

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

有关更多信息,请阅读支持不同密度的教程

于 2013-10-01T21:57:54.443 回答