本指南讨论了在 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
文件夹。该文件夹中还将包含几个其他重要的文件夹
res/mipmap-anydpi-v26
res/mipmap-*dpi
res/values
其中 Icon-*dpi.png
将是以下之一:mipmap-mdpi
、mipmap-hdpi
、mipmap-xxxdpi
等,具体取决于 Android 标准屏幕密度。
为保持简单,当你从欢迎屏幕、菜单中创建新项目或将文件夹从 Solar2D SampleApp 中复制时,Solar2D 会提供示例 AndroidResources
文件夹。将 AndoidResources
文件夹从其中一个位置复制到你的项目中,使其与 main.lua
位于同一个文件夹中。这将为你提供一个基本的结构,供你使用。
要维护 Android 7 及更早版本上的图标,请按照以下步骤操作
Icon-mdpi.png
文件复制到 AndroidResources/res/mipmap-mdpi
并将其重命名为 ic_launcher.png
。Android-Resources/res/mipmap-hdpi/ic_launcher.png
等)。现有图标的尺寸和格式应已准备好使用。你需要做的就是将它们移到正确的位置并正确地命名它们。
这需要你付出更多的思考和行动。首先,请阅读 Android 自适应图标指南
你很可能需要重新思考你的应用程序图标的外观,以使自适应图标能为你工作。
Google 与设备合作伙伴一起希望给予其设备合作伙伴更多设计灵活性。例如,在 Google Pixel 设备中,图标现在是圆形的。对于其他设备制造商,它们可能更像苹果的圆角矩形。每个设备制造商都提供一个覆盖在图标上的蒙版来赋予其形状,例如在 Pixel 设备中
绘制背景图像,在其中绘制前景图像,最后应用形状蒙版。
这些图像比你习惯使用的图标更大。但重要的是要知道前景图标需要置中,置于图像中间的 66%,其余部分为透明度。
你的背景图像通常为纯色,或者如果你有背景图像,则必须了解它的一大部分将被遮罩掉,以形成这些圆形、圆角矩形或其他形状。
设置了 AndroidResources
文件夹,以使用最少的工作量为你提供可用的自适应图标设置。
这就是 AndroidResources\res\mipmap-anydpi-v26
和 AndroidResources\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 Studio 来创建图标(官方指南)。但是,它可能会创建 Solar2D 不使用的过多文件,并可能会干扰构建过程。特别是,如果它创建了一个 style.xml 文件,现在只需将其删除即可。
再次强调,我们推荐简单复制恰当大小的文件覆盖我们生成的 AndroidResources/res
文件夹,并在可能的情况下使用简单的颜色背景。
Android 平台功能极其强大,且自适应图标不仅仅限于我们提供的模板。例如,你还可以将矢量图像和渐变用于图标层。不要害怕尝试。确保你拥有有效的 Android drawable 资源 ic_launcher
。