Android O 新特性:自适应图标(Adaptive Icons)

11,414 阅读3分钟
原文链接: mp.weixin.qq.com

关于异形图标和规则图标的取舍,在不同阵营的 Android 用户之间一直存在着争议。而一向提倡使用异形图标、讲求图标「个性」的 Google 在 Android 7.1 中引入了圆形图标规范,在 Android 8.0 中还将带来全新的自适应图标特性——Google 似乎想通过应用图标规范来触及 Android 平台的碎片化问题。

Android 8.0 (API 26)引入了自适应图标,可以在不同的设备上显示不同形状的图标。例如,一个app 如果采用了自适应图标,那么它就可以在一家的 OEM 厂商的手机上显示为圆形,在另一家 OEM 厂商的手机上显示为方形。只需要每个 OEM 厂商提供一个标准的图标遮罩,那么系统就可以将所有的自适应图标渲染为相同的形状。自适应图标同样可用于shortcuts (快捷方式)、设置、分享对话框、屏幕预览等地方。

自适应图标原理

在自适应图标中,将原来的一个图标分成了三个图层:

  • foreground:需要显示的主 icon

  • background:底层背景图案

  • Mask:遮罩,由手机设备厂商提供

通过这三个图层决定了自适应图标的外观和形状

需要注意的是,提供的图层是没有形状、阴影的 PNG 格式图象

设计规则

Android 7.1 (API 级别 25)及更早的版本中,app 的启动图标大小为 48dp ,在 Android 8.0 中,规则有所改变:

  • 两个图层的大小必须为 108 x 108 dp

  • 图层内部 72 x 72 dp 的区域为可见范围

  • 系统将保留四周各 18 dp 的范围,用来创建有趣的视觉效果,如视差或跳动

动画视觉效果由所支持自适应图标的启动器生存,视觉效果可能因启动器的不同而有差别

OEM 厂商所提供的遮罩是,自中点起至少 33 dp 范围内的区域

在XML中创建自适应图标

要给你的应用创建自适应图标,首先你需要你的应用的 AndroidManifest.xml 中为 android:icon 属性并指定一个 Drawable 资源。同时还可以为 android:roundIcon 属性指定一个图标,这个属性不是必须的,只有当你想为你的 app 在任何时候都以一个圆形图标展示时使用。下面的代码将示范这两个属性的用法

接下来需要在资源文件及中创建我们的自适应图标,在 Android 8.0 中自适应图标存在于 res/mipmap-anydpi/   文件夹下,使用 <adaptive-icon> 元素为你的图标定义前景和背景图层。<background> 和 <foreground>  分别为前景图层和背景图层,支持 android:drawable 属性。

使用 Image Asset 创建自适应图标

Android studio 中提供了 Image Asset 工具,可以帮我们快速生成并适配各种分辨率的图标,在 AS 项目中的任意地方,右键 new 选择   Image Asset 

如图所示,选择完前景和背景图层后,预览界面会出现不同分辨率及不同形状的自适应图标,点击 next 选择生成的目录,一套自适应图标就生成啦。

由于 Android 系统的开源特性,各个手机厂商定制的 UI 百花齐放,在经历了拟物风到扁平化的转变之后,随着 Android 5.0 推出的 Material Design,各个手机厂商基本都本着在少许的定制化下,在风格上尽量还原 Android 原本的设计。

 分享有趣的新事物 

Android、Kotlin、设计、产品、思考、游戏。

长按关注