Android启动器图标 - 我的默认/ hdpi资源是多余的?

时间:2013-04-11 22:10:57

标签: android resources icons launch mdpi

我是Android开发的新手(使用Mono for Android),我在这里阅读了thisthis this和其他questions我不确定如何为我的应用程序提供所有必需的Icon文件。

  1. 从模板项目中,IDE为我创建了一个带有48x48 px Icon.png文件的drawable/文件夹。
  2. 由于我需要提供替代资源,我抓取了一个PNG文件作为我的应用程序图标并使用了Android Asset Studio(在文档中提到),它为我生成了以下文件:
  3. drawable-hdpi/ic_launcher.png(72x72像素)

    drawable-mdpi/ic_launcher.png(48x48像素)

    drawable-xhdpi/ic_launcher.png(96x96像素)

    drawable-xxhdpi/ic_launcher.png(144x144 px)

    (我不知道为什么,但Android Asset Studio没有生成ldpi版本,因此我将自己调整为36x36图标。)

    现在我迷路了

    1。我应该在drawable-mdpi/drawable/中保留48x48像素的副本吗?

    如果我只在drawable-mdpi/中保留图标,那么应用程序可能会在旧设备/ Android版本上崩溃(因为缺少默认资源)? 1.如果我只在drawable/(后备版)中保留图标,那么使用drawable-mdpi/有什么意义?

    由于我不确切知道该怎么做,我将项目可绘制文件夹保留如下:

    drawable/ic_launcher.png(48x48像素)

    drawable-hdpi/ic_launcher.png(72x72像素)

    drawable-ldpi/ic_launcher.png(36x36像素)

    drawable-mdpi/ic_launcher.png(48x48像素)

    drawable-xhdpi/ic_launcher.png(96x96像素)

    drawable-xxhdpi/ic_launcher.png(144x144 px)

    但我现在还不清楚。


    修改

    如果我提供所有可能的“替代”资源,则默认(drawable/)资源文件夹将变为冗余,因此我可以将其删除。但是我不愿意提供默认资源,因为做相反的事情似乎更合理:首先提供“默认”资源,然后根据需要提供“替代”资源。

1 个答案:

答案 0 :(得分:6)

这个引用有点长,但你应该阅读documentation对此有何看法:

  

在运行时,系统确保在当前屏幕上以最佳方式显示任何给定资源的以下过程:    1.系统使用适当的替代资源   根据当前屏幕的大小和密度,系统使用应用程序中提供的任何特定大小和密度的资源。例如,如果设备具有高密度屏幕并且应用程序请求可绘制资源,则系统会查找与设备配置最匹配的可绘制资源目录。根据可用的其他备用资源,具有hdpi限定符的资源目录(例如drawable-hdpi /)可能是最佳匹配,因此系统使用此目录中的可绘制资源。

     

2.如果没有匹配的资源,系统会使用默认资源并根据需要向上或向下扩展以匹配当前资源   屏幕大小和密度“默认”资源是那些资源   没有用配置限定符标记。例如,资源   在drawable /中是默认的可绘制资源。系统假定   默认资源是为基线屏幕大小而设计的   密度,这是正常的屏幕尺寸和中等密度。因此,   系统将默认密度资源扩展为高密度   适当时,屏幕和向下用于低密度屏幕。

     

但是,当系统正在寻找密度特定的资源时   并且没有在密度特定的目录中找到它,它不会   始终使用默认资源。系统可以改为使用其中之一   其他密度特定的资源,以提供更好的   缩放时的结果。例如,在寻找低密度时   资源,它不可用,系统更喜欢按比例缩小   高密度版本的资源,因为系统很容易   将高密度资源缩小到低密度0.5倍,   与通过缩放中密度资源相比,具有更少的工件   因子0.75。

因此,系统将为运行应用程序的任何设备寻找最佳尺寸的drawable。如果系统正在寻找48x48的启动器图标,它将以drawable-mdpi / first显示,因为文档建议您在该文件夹中放置一个48x48图标。既然你已经提供了,那么应用程序就没有必要在drawable /文件夹中查找默认图像。即使它确实如此,也不会有益,因为你已经提供了相同大小的图标。

如果您提供的只是一个特定的可绘制尺寸,即使您提供的尺寸非常错误,您的应用也不会在任何设备上崩溃。在这种情况下,图像看起来很糟糕,因为系统会加载您提供的单个图像。所以,如果你有drawable- * dpi文件夹中的图像,你将不需要一个drawable /.的副本。

TL; DR

不,如果你已经在drawable-mdpi /中有一个,那么你不需要在drawable文件夹中放入48x48的ic_launcher.png副本,因为系统会先选择那个。