Android IconFont全攻略
节日归来~~今天由我给大家先带来一篇文章~~
上周推送了一篇App优化攻略-用TextView显示图片,发现留言众多,留言基本分为3类:
1. 推荐一些自己的使用经验
2.对于字体库的大小的忧虑
3.对于如何设置字体的建议以及忧虑
那么本文主要围绕以上3个问题来解答了~~
对于使用,最主要就是找到一些靠谱的素材站点了
http://www.iconfont.cn/
https://icomoon.io/app/#/select
https://github.com/mikepenz/Android-Iconics
我一般使用第一个站点较多,基本上可以搜索到需要的任何图标,非常方便,也支持颜色和大小的设置,比如我们搜索“聊天”:
如果你还在依赖反编译找图标,不如试试这个网站吧,单纯的下载还不要登录,非常方便。
其他的网站用法应该类似~~不赘述了~~
一般情况下,一个字体库可能都是几M甚至几十M,所以大家本能的反应是,这种方式虽然方便好用,但是如果为了几个图标加载一个超大的字体库肯定是拒绝的。
其实不存在这样的问题的,因为字体库内的图标是可定制的,也就是说,我这个app用到了20个图标,我只需要将20个图标放到一个字体库即可,而不是加载完整的字体库。
下面看一下简单的数据比较:
项目中的一个小图(xhdpi下的ic_launcher.png)大小为5KB。
我随便打包了22个图标,做成的字体库的大小为:14kb / 22 = 0.64kb
而且这个字体库中的图,是可以随意放大不失真的~如果和大图对比,那么优势更加明显。
注:下载下来是一个压缩包,里面包含ttf,svg等,你可以打开demo.html作为字符与icon的对照表。
所以:该方案也是apk瘦身的可选手段之一。
还有种场景是,app内的图标部分是自己制作的,部分是网络上已有的,那么可以打成一个字体库么。
当然是可以的,比如你就可以依赖iconfont.com这个网站,自行上传svg图标,然后就可以自由选择了。
关于iconfont网站的用法参考:
http://www.iconfont.cn/help/platform.html
即可。
上一篇文章中给出了一个递归遍历的方式去寻找TextView然后设置TypeFace,很多朋友都对其性能表示考虑,并表示可以通过自定义View的方式来替代该方案。
关于自定义View的方案,这里就不描述了,无非就是在构造方法中去设置TypeFace。
记得以前我写过探究 LayoutInflater setFactory一文,所以我们介绍跟LayoutInflaterFactory相关的一种做法。
我们编写一个自定义的LayoutInflaterFactory:
字体文件我放在assets目录下。
然后你可以在你的BaseActivity的onCreate中,调用如下代码:
注意一定要在super.onCreate前调用即可。
该方式可以在TextView及其子类对象创建完成时,就可以为其调用setTypeFace,非常的高效。
而对于字体库的加载,如果有需要,你甚至可以采用懒加载的方式,在SplashActivity中对其初始化。
如果你对setFactory不了解:可以详细阅读探究 LayoutInflater setFactory该文。
ok,节假日结束的第一天,结合上篇文章可以更好让大家对IconFont这种做法以及如何做好有个详尽的了解。
话说回来,对于公众号推送的文章,大家可以留言提意见、交流、问题等,我可以按照本篇文章的方式,为大家解惑~
觉得有用不妨赞一个~~
如果你有好的文章想和大家分享,欢迎投稿,直接向我投递文章链接即可。
欢迎长按下图->识别图中二维码或者扫一扫关注我的公众号: