Android 8.0 系统应用图标适配

前因后果不想说太多,这里有一篇郭婶的博客:

Android应用图标微技巧,8.0系统中应用图标的适配 https://blog.csdn.net/guolin_blog/article/details/79417483

里头已经将应用图标的适配讲得比较细了,本篇博客的目的在于记录自己的手动实践,和自己的理解

新建一个项目

我新建了一个 IconDemo 的项目来进行展示,使用 Android Studio 的版本为3.1.2,项目创建成功之后,我们可以在 res 目录下看到如下目录结构

图还真不少,以前的做法,我们会让 ui 给我们切不同尺寸的图标,然后替换就可以了,但是 8.0 系统的应用图标规范已经改了,如果只是替换掉上面的 ic_launcher.pngic_launcher_round.png,而不去管 mipmap-anydpi-v26目录的话,你会发现在 8.0 系统的手机上你的图标一直是默认图标。

此时如果你没时间去搞这些适配,只要把mipmap-anydpi-v26 这个文件夹删掉就可以了。但是如果你只有ic_launcher.png 没有ic_launcher_round.png,或者在清单文件AndroidManifest.xml中把android:roundIcon="@mipmap/ic_launcher_round" 干掉了的话,运行在 8.0 系统的手机上时,你的应用图标会非常丑,如下图

这里我随意找了一个美女图片作为应用图标,在删除了 mipmap-anydpi-v26android:roundIcon="@mipmap/ic_launcher_round" 后在模拟器上呈现的效果

试想,如果我只删除mipmap-anydpi-v26 是啥效果呢,请看

所以在我们有 ic_launcher_round 图片的时候,不去管 8.0 的图标适配是没啥大问题的

适配 8.0 应用图标

就没人问我为啥选的是一张美女图片作为应用图标么。。。

在郭婶博客的演示中,是用了爱奇艺的透明图标,然后吸取背景色来演示的。在我们一般开发中,ui 就给了不同尺寸的 logo 图,没啥前景层和背景层的区分,就比如我找到的这张美女图片,该设置什么背景层的颜色呢?

当然如果 ui 给了我们对应的前景图标和背景色那最好不过了,如果没有的话,那就只能赶鸭子上架了

先打开 Image Asset,首先设置前景层,选择我们的图标,这里选个最大尺寸的就行了,Image Asset 工具会自动给我们生成对应尺寸的启动图标(当然你可以选择用或者不用,这里我们主要利用它来适配 v26+)

刚开始 Resize 是100%的,这时候根据预览图去调节,自己根据自己的图标慢慢调吧,我这里调到67%刚好

然后就是背景层颜色,如果 ui 没给的话,那就默认白色吧

其他默认就好了,点击下一步,直至结束,完事后 mipmap-anydpi-v26 目录下的 ic_launcher.xml是这样的

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<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"/>
</adaptive-icon>

运行看下效果

这次我真没删任何东西

再次看 mipmap 目录,会发现多了好多图片,这是好事还是坏事呢?

这是个值得深思的问题,有大佬有好建议欢迎拍砖