我们是否需要将具有不同dpi的所有图像添加到Android应用程序中

时间:2014-06-22 09:29:37

标签: android android-actionbar multiscreen

如您所知,Android应用程序具有不同的DPI,而且在Android应用程序中,我们可以在drawableldpimdpi和{hdpixhdpixxxhdpi和{{1}}中添加{{1}}个不同的DPI {1}}文件夹。

问题是,当我们想要支持所有DPI时,我们应该添加各种尺寸的图标,还是只添加最大尺寸的图标?

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

或者我只需要在{{1}}文件夹中添加一个尺寸为96x96的图标,android会为其他DPI设置质量好的图标吗?

1 个答案:

答案 0 :(得分:4)

TLDR请参阅下面的粗体

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

如果您想要懒惰并且只是添加一个资产,那么最好的选择可能是 HDPI 资产,如果您的 min app target< 8 XHDPI ,如果> = 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。
  • 中引入的

this dev链接中获取的列表以获取更多信息。

这是我在职业生涯中使用的许多应用程序的方法,包括Google和Google的应用程序。英国广播公司并没有问题。