原文首发于微信公众号:躬行之,欢迎关注交流!
Android 8.0 引入了自适应应用启动图标,可在不同的设备中显示不同的图标,如自适应图标可以在一台设备上显示为圆形,在另一台设备上显示为方形,每个 OEM 厂商都会提供一个 mask,系统会自动将自适应图标渲染成相同的形状,自适应图标也可以使用到设置、分享等想保持统一图标风格的位置。
自适应图标支持的 mask 因不同设备而不同
可通过定义背景和前景的两个图层来控制自适应图标的外观,必须提供一个没有背景、没有阴影的图片作为图标的形状。
自适应图标的前景、背景以及 mask
Android 7.1 (API级别25) 之前的启动图标在标准屏幕密度下是 48 * 48 dp,现在必须按照如下标准定义自适应图标的图层:
- 前景层和背景层的尺寸大小必须是 108 * 108 dp;
- mask 可视范围的尺寸大小是 72 * 72 dp;
- 系统会在图标外层预留 18dp 用以创建有趣的视觉效果,视觉效果因不同设备的启动器而异
注意:OEM 厂商指定的遮罩半径最短 33dp。
创建自适应图标
创建自适应图标可以使用 Android Studio 提供的 Image Asset Studio 工具,使用该工具可以创建各种不同类型的图标,该工具会为每个通用屏幕密度生成一组具有相应分辨率的图标,当然使用 Image Asset Studio 还可以生成其他需要适配的一系列图标,下面是 Image Asset Studio 的操作界面,如下图所示:
选择前景和背景之后,Image Asset Studio 会自动生成相应分辨率的图标文件,参考如下:
上述目录中,目录 mipmap-anydpi-v26 就是为 Android 8.0 以上创建的启动器图标,当 Target Sdk Version 为 API 26 之上的时候,系统会自动选择该目录下的图标文件作为应用图标文件,其图标文件内容如下:
<!--ic_launchr.xml-->
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
上述文件中背景选择的是颜色,前景是选择的是一张图片,最终生成的自适应图标文件效果对比如下:
背景 | 前景 | 叠加效果 |
---|---|---|
#4E4C9E |
当然,如果是 Android 8.0 以前的版本,则会使用对应分辨率下的图标文件,这样就很方便的完成了图标文件的适配。可以选择关注个人微信公众号:躬行之 一起交流学习!