2011-06-16 113 views
13

我对这些目录中的每一个都有一个粗略的概念,但我对这个概念并不十分清楚,并且我有一些具体问题。解释drawable,drawable-ldpi,drawable-mdpi和drawable-hdpi之间的区别

例如,每个目录的目标DPI是什么?当你创建一个资产时,它应该在那个目标DPI上吗?还是应该在更普通的72dpi screen DPI上?如果您的目标是多个设备,是否可以将PNG绘制为可绘制的,或者您是否总是针对特定屏幕定制多个版本?

谢谢。

+0

我希望有更多的东西比文档的链接。我已阅读/浏览了screen_support文档,但我仍然有上面的具体问题。 – 2011-06-16 14:16:17

回答

35

正如其他人所说,Android的在线文档对这个伟大的文章。但是,我将尝试在此列出一些快速且有用的提示:

  1. 考虑MDPI是1。然后,LDPI是0.75,HDPI是1.5。这意味着如果在MDPI屏幕上有一个可绘制的图案,例如50x50,则它必须在LDPI屏幕上为~37x37,在HDPI屏幕上为75x75为了在物理尺寸大致相同的情况下显示每个屏幕(如果您在屏幕上放置标尺,则为2厘米)。此外,您的电脑屏幕是最有可能 MDPI,这就是为什么它建议先从MDPI drawables,然后调整它们:物理大小的可绘制将非常接近你的电脑屏幕和MDPI Android设备之间。如果您在计算机和HDPI设备上查看可绘制的HDPI,您将注意到它在电脑屏幕上变大了(再次,物理 - 放置了一个标尺)。
  2. 如果您不提供每种密度的特殊drawable,Android会自动缩放最近的一个。
  3. 您不应该认为设备的DPI与屏幕尺寸和/或像素数量和/或分辨率和/或宽高比有关。一个设备可以非常小,并有一个HDPI屏幕或非常大,并有一个LDPI屏幕。这种密度区分的全部要点是让所有设备上的东西看起来大小相同而不是在所有设备上都相同。例如,如果一个可绘制的图形填充整个屏幕上的一个MDPI设备,不要指望它在另一个MDPI设备上执行相同的操作。另外,不要指望在不同的DPI设备上“看到同样的事情”。大多数HDPI设备实际上具有比较低DPI设备更多的空间空间。例如,如果一个ListView可以在MDPI设备上显示5个项目,它可能能够在HDPI设备上显示6个项目,尽管事实上ListView项目具有相同的密度独立性(即,HDPI的1.5倍在MDPI)高度。

我可能有点偏离主题,但这些都是我通过猛撞我的头脑来对付他们的情况。只是想拯救别人的头痛:)

+3

这可能会有所帮助:http://blog.blundell-apps.com/list-of-android-devices-with-pixel-density-buckets/ – Blundell 2012-06-05 16:40:27

+0

感谢@Felix的清晰解释。我读过很多其他帖子,但无法理解!这对我来说真的很清楚! – 2013-12-14 00:03:28

+0

要添加到您的第一点,XHDPI是'2'而XXHDPI是'3'。因此,以MDPI屏幕上的50x50可绘制为例,它必须在XHDPI屏幕上显示为“100x100”,在XXHDPI屏幕上显示为“150x150”。 – Nick 2014-01-08 16:17:21

1

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

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

1

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

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

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

相关问题