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

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

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

谢谢。

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

  1. 考虑MDPI是1 。 然后,LDPI为0.75 ,HDPI为1.5 。 这意味着如果你在MDPI屏幕上有一个可绘制的,例如50x50 ,则在LDPI屏幕上必须是~37x37 HDPI屏幕上必须是75×75, 以便在每个屏幕上看起来大致相同的物理尺寸屏幕(如果你在屏幕上放一个标尺,则为2厘米)。 此外,您的计算机屏幕很可能是 MDPI,这就是为什么建议从MDPI drawables开始然后调整它们的大小 :在您的计算机屏幕和MDPI Android设备之间,drawable的物理大小非常接近。 如果您在计算机和HDPI设备上查看HDPI可绘制,您会注意到它在PC屏幕上的尺寸大得多(再次, 物理上 – 在它上面放一个标尺)。
  2. 如果您不为每个密度提供特殊的drawable,Android将自动缩放最接近的一个。
  3. 您不应该将设备的DPI视为与屏幕尺寸和/或像素数和/或分辨率和/或纵横比有关。 设备可能非常小并且具有HDPI屏幕或非常大且具有LDPI屏幕。 这种密度差异的关键在于在所有设备上看起来大小相同,在所有设备上都不一样。 例如,如果drawable在一个MDPI设备上填充整个屏幕,则不要指望它在另一个MDPI设备上执行相同操作。 此外,不要指望在不同的DPI设备上“看到相同的东西”。 大多数HDPI设备实际上比较低DPI设备具有更多空间。 例如,如果ListView可以在MDPI设备上显示5个项目,它可能能够在HDPI设备上显示6个项目,尽管ListView项目具有相同的密度无关(即HDPI上的项目大于1.5倍)在MDPI上)高度。

我可能有点离场了,但这些都是我通过敲击他们的方式及时学到的东西。 只是想拯救别人的头痛:)

对不起,但Android有一个很棒的在线文档,有例子,所以对于这类问题答案是:

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

每个文件夹没有确切的DPI值。 每个文件夹都与某个范围相关。 请参阅此处: http : //developer.android.com/guide/practices/screens_support.html

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

由于屏幕尺寸和分辨率不同,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