Android 自适应图标

本指南讨论了在 Android 8(Android O)或更高版本上实现Android 自适应图标

对于兼容 64 位的 Solar2D 版本(2019.3492 或更高版本),Android 图标的处理方式完全不同,即使是对于 Android 7 及更早版本也是如此。

对于 Android 7 及更早版本,Android 图标是单层 .PNG 文件,为了简单起见,这些文件的命名很方便,Solar2D 会在后台将它们处理成 Android 可以找到它们的方式。这些图标位于主项目文件夹中,与 main.lua 相邻,只要你正确地命名它们并且尺寸合适,你就不必做更多的事情。

Android 8 及更高版本提供了一种让启动图标更灵活的方式。为了给设备制造商提供更多灵活性,Google 将图标分成两层:一层是背景层,一层是前景层。然后,原始设备制造商 (OEM) 提供一个蒙板,使图标在他们的系统中看起来很独特。一个制造商可能提供方形图标,而另一个制造商提供圆角矩形图标或圆形图标。通过组合背景、前景和蒙板,不同的设备可以有不同的外观,并且还允许在拖动图标或点击图标时出现很酷的动画效果,例如视差。

有关此的更多信息,请参阅 自适应图标

Solar2D 必须基于 Android 7 及更早版本以及现在的 Android 8 及更高版本来管理图标。Solar2D 的“让我们为你完成这件事”不再起作用了。你现在必须使用名为 AndroidResources 的文件夹。这是一个特定于 Solar2D 的文件夹,它实际上以 Android 标准方式保存图标信息。

AndroidResources 文件夹中将是标准的 Android res 文件夹。该文件夹中还将包含几个其他重要的文件夹

其中 Icon-*dpi.png 将是以下之一:mipmap-mdpimipmap-hdpimipmap-xxxdpi 等,具体取决于 Android 标准屏幕密度。

为保持简单,当你从欢迎屏幕、菜单中创建新项目或将文件夹从 Solar2D SampleApp 中复制时,Solar2D 会提供示例 AndroidResources 文件夹。将 AndoidResources 文件夹从其中一个位置复制到你的项目中,使其与 main.lua 位于同一个文件夹中。这将为你提供一个基本的结构,供你使用。

Android 7 及更早版本

要维护 Android 7 及更早版本上的图标,请按照以下步骤操作

现有图标的尺寸和格式应已准备好使用。你需要做的就是将它们移到正确的位置并正确地命名它们。

Android 8 及更高版本

这需要你付出更多的思考和行动。首先,请阅读 Android 自适应图标指南

你很可能需要重新思考你的应用程序图标的外观,以使自适应图标能为你工作。

什么是自适应图标

Google 与设备合作伙伴一起希望给予其设备合作伙伴更多设计灵活性。例如,在 Google Pixel 设备中,图标现在是圆形的。对于其他设备制造商,它们可能更像苹果的圆角矩形。每个设备制造商都提供一个覆盖在图标上的蒙版来赋予其形状,例如在 Pixel 设备中

Android adaptive icon layers
Android 自适应图标层

绘制背景图像,在其中绘制前景图像,最后应用形状蒙版。

这些图像比你习惯使用的图标更大。但重要的是要知道前景图标需要置中,置于图像中间的 66%,其余部分为透明度。

你的背景图像通常为纯色,或者如果你有背景图像,则必须了解它的一大部分将被遮罩掉,以形成这些圆形、圆角矩形或其他形状。

设置了 AndroidResources 文件夹,以使用最少的工作量为你提供可用的自适应图标设置。

这就是 AndroidResources\res\mipmap-anydpi-v26AndroidResources\res\values 文件夹派上用场的地方。默认设置是提供纯色背景(不需要图像文件)和一系列默认前景图像。默认情况下,前景图像被命名为 ic_launcher_foreground.png。此前景图像和纯色背景的组合与使用的蒙版系统配合良好。

为你的图标创建以下所列尺寸的前景图像,将它们放置在适当的 mipmap-*dpi 文件夹中。

然后,要更改背景颜色,用你最喜欢的文本编辑器打开 AndroidResources/res/values/values.xml,并将颜色更改为适合你图标的背景颜色。

但我想要我自己的背景图片

你也可以这样做。首先创建与 ic_launcher_foreground.png 相同大小的适当 .PNG 图像,将其命名为 ic_launcher_background.png,然后将其复制到相应的前景图像旁边的 res/mipmap-*dpi 文件夹中。

接下来,编辑 AndroidResources/res/mipmap-anydpi-v26/ic_launcher.xml 文件,将背景条目从

<background android:drawable="@color/ic_launcher_background"/>

更改为

<background android:drawable="@mipmap/ic_launcher_background"/>

之后,你所有的 Android 图标资源都应该位于 AndroidResources/res/ 中的各个文件夹中。

各种图标图像的尺寸

26 是 Android 8.0“Oreo”的 API 级别。

文件夹 图标名称 Android 版本 宽度 高度
mipmap-mdpi ic_launcher.png < 26 48 48
ic_launcher_foreground.png >= 26 108 108
ic_launcher_background.png >= 26 108 108
mipmap-hdpi ic_launcher.png < 26 72 72
ic_launcher_foreground.png >= 26 162 162
ic_launcher_background.png >= 26 162 162
mipmap-xhdpi ic_launcher.png < 26 96 96
ic_launcher_foreground.png >= 26 216 216
ic_launcher_background.png >= 26 216 216
mipmap-xxhdpi ic_launcher.png < 26 144 144
ic_launcher_foreground.png >= 26 324 324
ic_launcher_background.png >= 26 324 324
mipmap-xxxhdpi ic_launcher.png < 26 192 192
ic_launcher_foreground.png >= 26 432 432
ic_launcher_background.png >= 26 432 432

使用不同的工具创建 Android 图标

你还可以使用 Android Studio 来创建图标(官方指南)。但是,它可能会创建 Solar2D 不使用的过多文件,并可能会干扰构建过程。特别是,如果它创建了一个 style.xml 文件,现在只需将其删除即可。

再次强调,我们推荐简单复制恰当大小的文件覆盖我们生成的 AndroidResources/res 文件夹,并在可能的情况下使用简单的颜色背景。

Android 平台功能极其强大,且自适应图标不仅仅限于我们提供的模板。例如,你还可以将矢量图像和渐变用于图标层。不要害怕尝试。确保你拥有有效的 Android drawable 资源 ic_launcher