Android Studio 使用Android的Image Asset Studio时,为什么会为ic_launcher. xml和ic_launcher_round.xml生成相同的文件?

qco9c6ql  于 2023-01-21  发布在  Android
关注(0)|答案(1)|浏览(792)

在Android Studio中,我们可以右键单击res文件夹,然后选择New -〉Image Asset。这将打开Image Asset Studio,我们可以在其中生成启动器图标。通常用户会选择“Launcher Icons(Adaptive and Legacy)”作为图标类型,并为其源资产选择图像。在Options下,我们可以选择生成圆形图标(API = 25)。
此时,如果我们单击“Next”和“Finish”,将生成以下内容:

  1. ic_launcher_foreground.png(s)用于自适应图标中使用的每个密度mdpi-〉xxxhdpi
  2. ic_launcher_background. xml,表示自适应图标的背景色
  3. ic_launcher. xml,使用ic_launcher_foreground和ic_launcher_background定义自适应图标
  4. ic_launcher_round.png(s)表示每个密度mdpi-〉xxxhdpi的圆形图标类型。
  5. ic_launcher_round.xml。这就是它令人困惑的地方。
    ic_launcher_round. xml与ic_launcher. xml相同,并且没有使用ic_launcher_round. png。
    ic_launcher_round. xml是做什么的?为什么和ic_launcher.xml一样?为什么不使用ic_launcher_round. png
    Image Asset Studio上的文档并没有解释它,我看过的大多数存储库都显示了相同的ic_launcher. xml和ic_launcher_round. xml。
jrcvhitl

jrcvhitl1#

有一系列使用圆形图标的android设备(例如Pixel设备),第一个出现在API级别25。
它们将在AndroidManifest中查找应用程序标记的roundIcon属性中定义的资源。对于不支持自适应图标的API级别25,我们只想使用icon_round. png来获得适当的密度。
然而,对于API级别26及以上,我们实际上根本不需要一个特殊的圆形图标,这是因为adaptive icons被设计成在多种场景下工作,其中包括圆形图标场景,所以对于运行api级别26及以上的设备,我们只需要使用一个典型的自适应图标。
这意味着生成的ic_launcher_round.png(s)仅适用于使用圆形图标并运行API 25的设备。这就是GUI在生成圆形图标选项旁边特别注明(API = 25)的原因。
因此所有圆形图标设备都将使用roundIcon属性中定义的值,对于API 25及以下版本(实际上仅api 25),该值将Map到ic_launcher_round.png,对于api 26及以上版本,该值将Map到ic_launcher_round. xml(因为它位于mipmap-anydpi-v26目录中)。
一些开发人员实际上会将ic_launcher_round重新定义为ic_launcher. xml的资源别名,而不是复制代码来使这一点更加清楚。
例如:<item type="mipmap" name="ic_round_launcher">@mipmap/ic_launcher</item>

相关问题