6 分钟读完

Android 自适应图标:图层、安全区和真实做法

Android 8.0 引入自适应图标(Adaptive Icon)至今,它仍是多数新开发者最容易做错的一块: 不是画得不好,而是交的素材形态不对。 这篇把画布、安全区、两层结构和主题图标一次讲清,规格以 Android 官方文档为准。

方形图标分离出前景与背景两层并标注安全区的插画

自适应图标是怎么回事

传统图标是一张固定形状的图,启动器爱莫能助;自适应图标把图标拆成背景层+前景层两个独立的可绘制资源, 系统再按设备偏好把叠好的结果蒙上圆形、方圆、胖星形等各种形状。你交的是「内容」,系统决定「形状」—— 这就是为什么同一个图标在不同手机上形状可能不一样,而且是正常的。

两层还会做视差动效:拖动图标时前景相对背景轻微位移。所以前景层要独立成立、背景层要能延伸到边缘,别把整个图标拼死在一张图里。

换算成像素

密度画布(108dp)安全区(66dp)
mdpi108×10866×66
hdpi162×16299×99
xhdpi216×216132×132
xxhdpi324×324198×198
xxxhdpi432×432264×264

记一组数就够:432 画布、264 安全区(xxxhdpi), 其余按倍率缩。背景层要铺满 108dp;前景主体控制在中心 66dp 里——系统蒙版最多会裁掉外围约四分之一。

真实图标里最常见的错

我们平时翻安卓图标库,看到的高频错误按出现频率排:

  • 前景出安全区。主体画到 66dp 之外,在圆形蒙版启动器上直接被切边;在视差动效里还会和背景错位。
  • 背景层用纯白或纯透明。透明背景在浅色壁纸上图标「消失」;纯白背景在 Material You 主题色联动里格格不入。
  • 两层拼死。把带背景的整图塞进前景层,再垫一张同款背景——视差一动就穿帮。
  • 只有一套 legacy 图标。只交旧的 48dp 位图,新系统上没有圆角蒙版联动,一眼「老 App」。

主题图标:单色层

Android 13 起,用户可以开「主题图标」:系统取图标的单色层(monochrome), 用壁纸取色重新上色,生成一排与壁纸同色调的图标。单色层是可选的第三层资源——不做,用户开主题图标时你的图标会 被降级成「套壳原图」,观感突兀。

单色层的画法:把前景主体简化成纯白形状、透明背景, 细节全部去掉——系统只取 alpha 通道。凡是渐变、阴影、细线都留不住。

动手做一遍

以最新的资源结构(res/mipmap-anydpi-v26)为例,核心其实只有一段 XML:

<!-- res/mipmap-anydpi-v26/ic_launcher.xml -->
<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" />
    <monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

背景可以引用颜色也可以引用 drawable;前景和单色层放对应密度的 PNG(或 VectorDrawable)。 Android Studio 的 Image Asset Studio 能帮你从一张 1024 原图自动切层,但切完务必手动检查前景是否越界。

上线前检查一遍

  • 前景主体在 66dp 安全区内,四周留呼吸;
  • 背景层铺满 108dp,无透明;
  • 圆形、方圆两种蒙版下各看一遍(模拟器或 Shape Shifter 类工具);
  • 做了 monochrome 层,开主题图标看效果;
  • Google Play 商店单独交 512×512 高清图;
  • 导出用素材包生成器打包安卓 7 档,别手切。

常见问题

Android 自适应图标是什么?

Android 8.0 引入的图标格式:图标拆成背景层和前景层两个独立资源,系统按设备偏好蒙上不同形状并做视差动效。画布 108dp,安全区 66dp。

自适应图标要做多大?

按密度出 108dp 的倍数档,最高 xxxhdpi 432×432px;日常设计在 1024 画布上做,按 432 出图即可。

自适应图标的安全区是多大?

中心 66×66dp(xxxhdpi 下 264×264px)。系统蒙版最多裁掉外围约四分之一,主体必须在安全区内。

还需要旧版的桌面图标吗?

minSdk ≥ 26 就不需要。要兼容更低版本,再补一套传统 48dp 位图作为回退即可。

Android 的主题图标怎么做?

在 adaptive-icon XML 里加一个 monochrome 层,内容是纯白形状、透明背景的单色素材,系统会按壁纸取色重新上色。

Google Play 图标要加圆角吗?

不要。Play 的 512×512 商店图标和桌面图标都会由系统统一处理形状,交方形原图。

Android自适应图标指南

更多文章