14

我对每个目录的用途有一个粗略的了解,但我对这个概念并不是很清楚,而且我有一些具体的问题。

例如,每个目录的目标 DPI 是多少?当您创建资产时,它应该是目标 DPI 还是更正常的 72dpi 屏幕 DPI?如果您针对多个设备,是否适合将 PNG 放入可绘制对象中,或者您是否应该始终拥有针对特定屏幕稍微定制的多个版本?

谢谢。

4

4 回答 4

38

正如其他人所建议的那样,Android 在线文档对此有很好的文章。但是,我将尝试在此处列出一些快速且有用的提示:

  1. 考虑 MDPI 是1. 那么,LDPI 为0.75,HDPI 为1.5。这意味着,如果您有一个可绘制对象,例如,50x50在 MDPI 屏幕上,它必须~37x37在 LDPI 屏幕和75x75HDPI 屏幕上,以便在每个屏幕上以大致相同的物理尺寸出现(即 2 厘米)如果你把尺子放在屏幕上)。此外,您的计算机屏幕很可能是MDPI,这就是为什么建议从 MDPI 可绘制对象开始然后调整它们的大小:可绘制对象的物理尺寸在您的计算机屏幕和 MDPI Android 设备之间将非常接近。如果您在计算机和 HDPI 设备上查看 HDPI drawable,您会注意到它大得多(再次,物理上——把尺子放在它上面)在电脑屏幕上。
  2. 如果您没有为每个密度提供特殊的可绘制对象,Android 将自动缩放最接近的可用对象。
  3. 您不应认为设备的 DPI 与屏幕尺寸和/或像素数和/或分辨率和/或纵横比有任何关系。设备可以非常小并具有 HDPI 屏幕,也可以非常大且具有 LDPI 屏幕。这种密度差异化的重点是让所有设备上的东西看起来都一样大小而不是在所有设备上都一样。例如,如果一个可绘制对象在一个 MDPI 设备上填满整个屏幕,则不要期望它在另一个 MDPI 设备上做同样的事情。此外,不要期望在不同的 DPI 设备上“看到相同的东西”。大多数 HDPI 设备实际上比低 DPI 设备拥有更多空间。例如,如果一个ListView可以在 MDPI 设备上显示 5 个项目 它可能能够在 HDPI 设备上显示 6 个项目,尽管这些ListView项目具有相同的密度无关(即 HDPI 上的高度是 MDPI 上的 1.5 倍)。

我可能有点跑题了,但这些都是我通过用头撞到它们及时学到的东西。只是想挽救别人的头痛:)

于 2011-06-16T14:26:34.083 回答
2

抱歉,Android 有一个很棒的在线文档和示例,所以对于这类问题,答案是:

http://developer.android.com/guide/practices/screens_support.html

于 2011-06-16T14:04:36.590 回答
1

每个文件夹都没有确切的 DPI 值。每个文件夹都与某个范围相关。见这里:http: //developer.android.com/guide/practices/screens_support.html

这些目录必须包含针对某些屏幕密度优化的可绘制资源。您可以只为 HDPI 或任何其他内容保留一个可绘制对象,但在具有其他 DPI 设置的设备上,图像会以某种方式调整大小,并且需要时间/资源。在具有 HDPI 的设备上,低 DPI 图像也会看起来很差。

于 2011-06-16T14:04:58.603 回答
1

由于屏幕尺寸和分辨率不同,Android 允许您根据文件夹排列可绘制图像。用于高 dpi 显示的图像应放置在 hdpi 中,类似地放置在 mdpi 和 ldpi 中。如果操作系统不匹配任何 dpi 类别或在特殊 dpi 目录中找不到资源,则可绘制文件的默认文件夹是 drawables,系统会从 drawables 目录中选择资源。

大小不精确,但高达 130dpi 被认为是小,从 130 到 180 可以认为是 mdpi,从 180 到 200 可以认为是 hdpi,更高的归类为 xdpi。

http://developer.android.com/guide/practices/screens_support.html

于 2011-06-16T14:07:12.427 回答