Android 8.0(API级别26)引入了自适应启动器图标,可以在不同的设备模型中显示各种形状。例如,自适应启动器图标可以在一个OEM设备上显示圆形形状,并在另一个设备上显示一个圆形。每个设备OEM都提供一个遮罩,系统随后使用该遮罩来渲染具有相同形状的所有自适应图标。自适应启动器图标也用于快捷方式,设置应用程序,共享对话框和总览屏幕。
你可以通过定义2层来控制自适应启动器图标的外观,包括背景和前景。您必须提供图标图层作为可绘图,而无需在图标轮廓周围使用蒙版或背景阴影。
在Android 7.1(API级别25)及更早版本中,启动器图标大小为48 x 48 dp。您现在必须使用以下准则来调整图标图层的大小:
- 两层的尺寸必须为108 x 108 dp(背景图层和前景图层尺寸都是108*108dp)。
- 图标的内部72 x 72 dp出现在遮罩的视口内(前景图层中间的72*72图层就是在手机界面上展示的应用图标范围,一般应用图标内容尺寸会比72*72dp尺寸小,因为边缘留空白会比较美观,如下面白色小动物离边缘都留有距离)。
- 系统在四面各留出18dp,以产生有趣的视觉效果,如视差或脉冲。
注意:动画视觉效果由受支持的启动器生成。视觉效果可能因发射器而异。
注意:设备OEM可以指定一个掩模,该掩模可以包含沿形状的某些点短至33 dp的半径。
警告:如果您没有使用必要的图层更新启动器图标,则图标与系统UI显示的其他图标看起来不一致,并且不支持视觉效果。
要了解如何使用Android Studio创建自适应图标,请参阅 使用Image Asset Studio创建应用程序图标。
在XML中创建自适应图标
要使用XML将自适应图标添加到应用程序,请首先更新android:icon
应用程序清单中的 属性以指定可绘制资源(如下定义了名为ic_launcher的资源,名字可以自定义,注意文件目录,如下引用的是mipmap文件下的资源,适配8.0 需要定义xml,除此之外还需要放一个与xml同名字的应用图标名让8.0以下系统应用)。您还可以使用该android:roundIcon
属性定义图标可绘制资源。android:roundIcon
如果您需要圆形遮罩的不同图标资源,则只能使用该属性,例如,徽标的品牌依赖于圆形形状。以下代码片段说明了这两个属性:
<application … android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" …> </application>
接下来,您必须在您的应用程序中使用Android 8.0(API级别26)创建替代的可绘制资源res/mipmap-anydpi/ic_launcher.xml
。然后,您可以使用该<adaptive-icon>
元素为图标定义前景层和背景层的绘图。的<foreground>
和<background>
内部元件都支持android:drawable
属性(注意: android studio3.0以下的编译器无法找到adaptive-icon标签,但是不影响编译和运行,android studio3.0可顺利编译不报错)。
<?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@drawable/ic_background"/> <foreground android:drawable="@drawable/ic_foreground"/> </adaptive-icon>
您还可以通过在封闭它们定义背景和前景可绘制作为元素<foreground>
和<background>
元素。
如果要将常规自适应启动器图标应用于快捷方式的相同蒙版和视觉效果,请使用以下技巧之一:
- 对于静态快捷方式,请使用该
<adaptive-icon>
元素。 - 对于动态快捷方式,请在
createWithAdaptiveBitmap()
创建方法时调用该 方法。
有关快捷键的更多信息,请参阅 应用程序快捷键。