Android启动器图标-我的默认/mdpi资源是否是冗余的?

Android启动器图标-我的默认/mdpi资源是否是冗余的?,android,resources,icons,launch,mdpi,Android,Resources,Icons,Launch,Mdpi,我是Android开发的新手(使用Mono开发Android),我读过,还有一些其他的,但我不确定如何为我的应用程序提供所有必要的图标文件 从模板项目中,IDE为我创建了一个带有48x48 px Icon.png文件的drawable/文件夹 由于我需要提供其他资源,我抓取了一个PNG文件作为我的应用程序图标,并使用了(在文档中提到的),它为我生成了以下文件: 可绘制hdpi/ic_launcher.png(72x72像素) 可绘图mdpi/ic_launcher.png(48x48 px) d

我是Android开发的新手(使用Mono开发Android),我读过,还有一些其他的,但我不确定如何为我的应用程序提供所有必要的图标文件

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

    可绘图mdpi/ic_launcher.png
    (48x48 px)

    drawinable xhdpi/ic_launcher.png
    (96x96 px)

    可绘图xxhdpi/ic_launcher.png
    (144x144 px)

    (我不知道为什么,但是没有生成
    ldpi
    版本,所以我将自己的大小调整为36x36图标。)

    现在我迷路了

    1。我是否应该在
    drawable mdpi/
    drawable/
    中维护48x48 px副本?

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

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

    drawable/ic_launcher.png
    (48x48像素)

    可绘制hdpi/ic_launcher.png
    (72x72像素)

    可牵引ldpi/ic_launcher.png
    (36x36 px)

    可绘图mdpi/ic_launcher.png
    (48x48 px)

    drawinable xhdpi/ic_launcher.png
    (96x96 px)

    可绘图xxhdpi/ic_launcher.png
    (144x144 px)

    但我还是不清楚


    编辑:


    如果我提供了所有可能的“替代”资源,那么默认的(
    drawable/
    )资源文件夹将变得多余,因此我可以删除它。但是,我不愿意不提供默认资源,因为这样做似乎更合理:首先提供“默认”资源,然后根据需要提供“替代”资源。

    这段引文有点长,但您应该仔细阅读以下内容:

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

    2.如果没有匹配的资源可用,系统将使用默认资源,并根据需要将其放大或缩小以匹配当前资源 屏幕大小和密度“默认”资源是 未使用配置限定符标记。例如,资源 在drawable/中,是默认的可提取资源。系统假设 默认资源是为基线屏幕大小和 密度,这是一个正常的屏幕大小和中等密度。像这样的 系统会将默认密度资源向上扩展以实现高密度 适用于低密度筛网的筛网和下筛网

    但是,当系统寻找特定密度的资源时 并且在密度特定目录中找不到它,它不会 始终使用默认资源。系统可以使用以下选项之一: 其他密度特定的资源,以便提供更好的 缩放时的结果。例如,在寻找低密度 如果资源不可用,系统倾向于缩小 高密度版本的资源,因为系统可以轻松 以0.5倍的比例将高密度资源缩小为低密度资源, 与通过 系数为0.75

    因此,无论应用程序运行在什么设备上,系统都将寻找尺寸最佳的可绘制设备。如果系统正在查找48x48的启动器图标,它将首先在drawable mdpi/中查找,因为文档建议您在该文件夹中放置48x48图标。既然您已经提供了,那么应用程序就没有理由必须在drawable/文件夹中查找默认图像。即使这样做了,也不会有什么好处,因为您已经提供了相同大小的图标

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

    TL;博士

    不,如果您在drawable mdpi/中已经有一个ICU launcher.png的48x48副本,那么您不需要将它放在drawable文件夹中,因为系统将首先选择该副本。

    因此,1)我是否可以将位图(
    png
    jpg
    ,…)所有
    drawable-*dpi
    文件夹中的资源,默认
    drawable
    文件夹除外?2) 如果我没有在默认的
    drawable
    one中提供资源,是否可以保证应用程序不会崩溃(无论使用何种设备)?(假设我提供了至少一种替代资源,例如:
    可绘制的xhdpi
    )。我害怕不提供“默认”选项,因为: