自适应图标

Android 8.0(API 级别 26)引入了自适应启动器图标,它可以在不同设备型号上显示为不同的形状。例如,在一台原始设备制造商 (OEM) 设备上,自适应启动器图标可显示为圆形,而在其他设备上则可显示为方圆形。每个设备的原始设备制造商 (OEM) 都会提供一个蒙版,系统使用该蒙版渲染所有具有相同形状的自适应图标。自适应启动器图标还会在快捷方式、“设置”应用、共享对话框和概览屏幕中使用。

应用于自适应图标线框的各种蒙版 应用于自适应图标的各种蒙版

图 1. 自适应图标支持各种蒙版,这些蒙版因设备而异。

您可以通过定义 2 个图层(由一个背景图层和一个前景图层组成)来控制自适应启动器图标的外观。您必须提供图标图层作为可绘制资源,而不使用图标轮廓周围的蒙版或背景阴影。

创建自适应图标的等距插图

图 2. 使用 2 个图层和一个蒙版定义自适应图标。

在 Android 7.1(API 级别 25)及更早版本中,启动器图标的尺寸为 48 x 48 dp。现在,您必须按照以下准则调整图标图层的尺寸:

  • 两个图层的尺寸都必须调整为 108 x 108 dp。
  • 已屏蔽的视口中显示的图标的内层为 72 x 72 dp。
  • 系统为 4 个面中每一面的外层保留 18 dp,以创建有趣的视觉效果(例如视差或脉动)。

注意:动画视觉效果由受支持的启动器生成。视觉效果可能因启动器而异。

注意:设备的原始设备制造商 (OEM) 可以指定一个蒙版,该蒙版可能包含沿形状特定点的半径(最短为 33 dp)。

应用于自适应图标的视差演示 应用于自适应图标的拾取动画演示

图 3. 自适应图标支持各种视觉效果。

注意:如果您不使用必需的图层更新启动器图标,则图标看上去会与系统界面显示的其他图标不一致,并且不支持视觉效果。

要了解如何使用 Android Studio 创建自适应图标,请参见使用 Image Asset Studio 创建应用图标

在 XML 中创建自适应图标

要使用 XML 向应用添加自适应图标,请首先更新应用清单中的 android:icon 属性以指定可绘制资源。您还可以使用 android:roundIcon 属性定义图标可绘制资源。如果您需要圆形蒙版的其他图标资源(例如,您的徽标品牌依赖于一个圆形),那么您只能使用 android:roundIcon 属性。以下代码段演示了这两种属性:

    <application
        …
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        …>
    </application>
    

接下来,您必须在应用中创建备用可绘制资源(在 res/mipmap-v26/ic_launcher.xml 中),以便用于 Android 8.0(API 级别 26)。然后,您可以使用 <adaptive-icon> 元素为图标定义前景和背景图层可绘制资源。<foreground><background> 内部元素均支持 android:drawable 属性。

    <?xml version="1.0" encoding="utf-8"?>
    <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
        <background android:drawable="@drawable/ic_launcher_background" />
        <foreground android:drawable="@drawable/ic_launcher_foreground" />
    </adaptive-icon>
    

您还可以将背景和前景可绘制资源定义为元素,方法是将它们封入 <foreground><background> 元素中。

如果您要将相同的蒙版和视觉效果应用于常规自适应启动器图标的快捷方式,请使用以下技术之一:

  • 对于静态快捷方式,请使用 <adaptive-icon> 元素。
  • 对于动态快捷方式,请在创建它们时调用 createWithAdaptiveBitmap() 方法。

有关快捷方式的详情,请参见应用快捷方式

其他资源

有关设计和实现自适应图标的其他信息,请参阅 Google 设计人员兼开发者 Nick Butcher 撰写的以下这一系列文章: