前因后果不想说太多,这里有一篇郭婶的博客:
Android应用图标微技巧,8.0系统中应用图标的适配 https://blog.csdn.net/guolin_blog/article/details/79417483
里头已经将应用图标的适配讲得比较细了,本篇博客的目的在于记录自己的手动实践,和自己的理解
新建一个项目
我新建了一个 IconDemo 的项目来进行展示,使用 Android Studio 的版本为3.1.2,项目创建成功之后,我们可以在 res 目录下看到如下目录结构
图还真不少,以前的做法,我们会让 ui 给我们切不同尺寸的图标,然后替换就可以了,但是 8.0 系统的应用图标规范已经改了,如果只是替换掉上面的 ic_launcher.png
和 ic_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-v26
和 android: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 | <?xml version="1.0" encoding="utf-8"?> |
运行看下效果
这次我真没删任何东西
再次看 mipmap 目录,会发现多了好多图片,这是好事还是坏事呢?
这是个值得深思的问题,有大佬有好建议欢迎拍砖