解释drawable,drawable-ldpi,drawable-mdpi和drawable-hdpi之间的区别

时间:2011-06-16 13:56:19

标签: android android-screen-support android-drawable

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

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

感谢。

4 个答案:

答案 0 :(得分:36)

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

  1. 考虑MDPI为1。然后,LDPI为0.75,HDPI为1.5。这意味着,如果您在MDPI屏幕上有一个可绘制的,例如50x50,则它必须在LDPI屏幕上为~37x37,在HDPI屏幕上为75x75,< strong>为了在每个屏幕上显示大致相同的物理尺寸(例如,如果在屏幕上放置标尺,则为2厘米)。此外,您的计算机屏幕很可能是 MDPI,这就是为什么建议从MDPI drawables开始然后调整它们的大小:drawable的物理尺寸将非常接近您的计算机屏幕和MDPI Android设备。如果您在计算机和HDPI设备上查看HDPI可绘制,您会发现它更大(再次,物理 - 在其样式上放置一个标尺)电脑屏幕。
  2. 如果您不为每个密度提供特殊的drawable,Android将自动缩放最接近的一个。
  3. 您不应该将设备的DPI视为与屏幕尺寸和/或像素数和/或分辨率和/或宽高比有关。设备可能非常小并且具有HDPI屏幕或非常大且具有LDPI屏幕。这种密度差异化的关键在于在所有设备上看起来大小相同在所有设备上都相同。例如,如果drawable在一个MDPI设备上填充整个屏幕,则不要指望它在另一个MDPI设备上执行相同操作。此外,不要指望在不同的DPI设备上“看到相同的东西”。大多数HDPI设备实际上比低DPI设备具有更多空间。例如,如果ListView可以在MDPI设备上显示5个项目,它可能能够在HDPI设备上显示6个项目,尽管ListView项目具有相同的密度独立性(即HDPI比MDPI大1.5倍)。
  4. 我可能有点偏离主题,但这些都是我通过敲击他们的方式及时学到的东西。只是试图挽救别人的头痛:)

答案 1 :(得分:2)

很抱歉,但Android有一个很好的在线文档,其中包含示例,因此对于此类问题,答案是:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

尺寸不精确但高达130dpi它被认为是小的,从130到180它可以被认为是mdpi,从180到200它可以被认为是hdpi而更高被分类为xdpi。

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