5

如您所知,Android 应用程序具有不同的 DPI,并且在 Android 应用程序中,我们可以在drawablediffrent 、 和 文件夹中添加具有不同 DPIldpimdpis 。hdpixhdpi

问题是当我们想要支持所有 DPI 时,我们应该添加所有不同大小的图标还是只添加最大的图标?

我的意思是,例如,假设我有一个带有图标的操作栏项目。我是否应该使用 24x24(在 drawable-mdpi 文件夹中)、36x36(在 drawble-hdpi 文件夹中)、48x48(在 drawable-xhdpi 文件夹中)添加此操作栏项目的图标,......

或者我只需要在文件夹中添加一个大小为 96x96xxxhdpi的图标,android 就会为其他质量好的 DPI 设置图标?

4

1 回答 1

4

TLDR 见下面的粗体

后来为Android添加了不同的密度文件夹,这意味着......

如果您想偷懒并且只添加一项资产,那么最好的选择可能是HDPI资产(如果您的最小应用程序目标 < 8XHDPI如果其>= 8)。这是因为系统会按比例放大和缩小资源,但您仍然希望以可能的最高分辨率开始。

如果您想完全控制资产的缩放方式,那么您可以通过各种方式为所有/部分密度提供您自己的。在实践中,我通常如上所述提供 HDPI / XHDPI,并为徽标 / AB 图标 / 应用程序图标等提供所有资源桶。我通常发现自动缩放非常好,适用于大多数情况,但偶尔需要提供和额外的 LD/MD 资产,如果它是一个小资产/包含小文本等。另外,如果我为 XXXHDPI 之类的东西复制所有资产,我会得到相当不错的 apk 膨胀。

您还可以使用内置工具的 IDE 一次为多个密度添加单个资产。在 Android Studio 0.6 中,这是 File->New->Image Asset 并且会出现一个向导。

我从未注意到或听说过允许 Android 自动扩展资产对性能的任何影响——大概这是在硬件中完成的。

当自动缩放到 LDPI 时,它可能看起来不太好,因此您可以选择为所有其他密度提供自己的缩放资产。

取自以下链接

  • ldpi:低密度屏幕;大约 120dpi。
  • mdpi:中等密度(在传统 HVGA 上)屏幕;大约 160dpi。
  • hdpi:高密度屏幕;大约 240dpi。
  • xhdpi:超高密度屏幕;大约 320dpi。在 API 级别 8 中添加
  • nodpi:这可用于您不希望缩放以匹配设备密度的位图资源。
  • tvdpi:屏幕介于 mdpi 和 hdpi 之间;大约 213dpi。这不被视为“主要”密度组。它主要用于电视,大多数应用程序不需要它 - 为大多数应用程序提供 mdpi 和 hdpi 资源就足够了,系统将根据需要对其进行缩放。此限定符是在API 级别 13 中引入的。

来自开发链接的列表以获取更多信息。

这是我在职业生涯中用于许多应用程序的方法,包括用于 Google 和 BBC 的应用程序,并且没有出现问题。

于 2014-06-22T09:32:34.563 回答