PNG为位图,是由不同的排列和染色的像素点组成的图像,当放大位图时就能清晰的看见无数个小方块(像马赛克一样),所以位图的扩大实质是增加单个像素点的大小,故而导致在不同分辨率表现非常糟糕。
SVG为可缩放矢量图,它不会像位图一样因为缩放而让图片质量下降,他在不同分辨率的表现都一样清晰。
IconFont是WebFont形式的图标,你可以把他认为就是WebFont,该类东东的制作来自于SVG矢量图,所以它不会像位图一样因为缩放而让图片质量下降,他在不同分辨率的表现都一样清晰。
下面我们简单给出这几种格式图标素材的对比:
| 图标类型 | 构成 | 优势 | 劣势 |
| — | — | — | — |
| PNG | 独立像素点 | 可以实现各种色彩及真实画面的复现 | 体积比较大,缩放和旋转易失真 |
| SVG | 向量 | 体积较小,缩放和旋转不失真 | 制作色彩变化太多的图象难度比较大 |
| IconFont | WebFont | 体积较小,缩放和旋转不失真 | 基本不支持多色彩图像,一般都是单色 |
有了上面这些对比之后,在正式开始实战之前我们先来简单粗暴了解下SVG与IconFont在App中的优点吧,不然下文就没有存在的意义喽,如下:
-
图标集中处理,设计妹妹只用出一次图喽。
-
减少重型应用或者固件大小,因为IconFont是字符串而不是图片,SVG的体积也小于PNG。
-
因为IconFont的绘制原理和普通文本一样,所以运行时会占用更小的内存空间。
听着挺诱人,好吊的样子,实际下面我们来看一下你就明白啦。
3 PNG、IconFont、SVG实战
========================
有了上面的理论基础,下面我们就来看下他们各自的使用方法;关于PNG的使用这里就不介绍了,没啥新鲜的,从Android一出来支持到现在的格式,要是还不会那就真该拖出去乱炖了。
3-1 IconFont使用实例
哈哈,这个其实阿里妈妈MUX团队早就给大家搞好强大的库和相关使用文档了,详细可以点我查看。当然喽,有的公司会搞自己的库服务器,自己去搭建,有的公司会借助阿里妈妈提供的平台直接去制作;不管哪种平台其实实质都一样,没啥可说的,原理一样,只是我们可能会自己依据需求自定义一些支持IconFont的拓展TextView、ImageView等,万变不离其宗,由于确实很简单,下面我们给一个非常简单的例子描述就行了。如下以阿里巴巴IconFont平台为例:
-
从平台选择要使用到的图标下载到本地,复制ttf字体文件到项目assets目录下。
-
打