起因

Android 8.0 api 26 开始,出现了 mipmap-anydpi-v26 文件夹,这引入了新的 launcher icon 实现方式,用于规范启动图标。

  • 原理,一张 foreground icon + 一张 background image + 手机厂商自己 mask(圆,圆矩,方等)= app 启动图标。
  • foreground icon 和 background image 都是 xml 的矢量图(其实使用位图应该也可以)

什么是矢量图:vector

也叫向量图,是一种缩放大小之后可以依然保证图片质量的图片格式。 详细的说,矢量图是通过多个对象组合而成的,而每一个对象的记录方式都是数学函数,因而图形的形成是通过函数运算得到的,这也是为什么可以保证质量的原因。

位图和矢量图的区别

  • 与矢量图对应的就是位图,也叫点阵图。与矢量图不同的是,位图记录方式是像素,这也是其最小单位,而像素的多少的固定也是导致图片缩放大小后无法保证原来图片质量的原因。
  • 基于它们各自的特点,位图的优势在于色彩效果的修改更加的方便,但是效果越复杂,对应像素要求越高,文件也就越大;矢量图的优势在于形状上修改的便捷,但是色彩的丰富却没有位图来的直接方便,但在图形同质量情况下,矢量图文件大小上非常有优势。
  • 另外。矢量图由于需要计算,因此会比位图消耗更多 CPU 计算时间。
  • 最后,矢量图很容易转位图,然而位图转矢量图却不容易。

什么时候用矢量图

基于矢量图的优势,那么在图片不是非常的大(因为计算需要时间),且图片比较偏重于几何形状,线条,色彩比较简单的情况下使用。就如 android app 的启动图标

Android 启动图标的制作和使用

根据启动图标都需要我们需要制作两个图片,一个前景图 foreground icon 一个背景 background image

  1. 使用 sketch 来制作,非常方便,做完之后按‘s’切片,注意这里要导出 svg 图
  2. 使用 android studio 的 vector asset 工具进行 svg 图片导入成 xml 文件的处理
  3. 使用同样的方法导入背景的 svg 图片
  4. 使用 android studio 的 image asset 选择刚刚导入的 foreground layer 和 background layer 启动图标的制作