由于Android系统存在多种分辨率,我们在使用图片时,往往需要准备ldpi、mdpi、hdpi、xhdpi等多种分辨率的图片,占用大量APK体积。
针对这种情况,本文介绍了如何VectorDrawable技术的优点,以及使用场景。
link



不合适的做法

JPEGPNG是光栅化的图片格式,如果我们不希望在不同分辨率下出现图片模糊的情况,就必须准备多张图片,这会浪费APK体积。


VectorDrawable

VectorDrawable则可以只用一个文件满足多种屏幕分辨率。它将图片分解为多个基本图形的组合,如下所示。

对于文章开头的三个圆形的场景,可以将占用空间从56K降低到2K,降低了96%。

使用VectorDrawable还可以避免因使用帧动画,导致图片文件过多的情况


Caveats

加载

加载时,JPEGPNG文件可以依靠硬件进行纹理渲染,而VectorDrawable在处理时,需要先翻译成GPU指令,VD中的每一个基本图形,都会被作为一个图层处理。

复杂图像

VectorDrawable不适用于处理复杂图像,对于下图的肖像,使用PNG是更好的选择。

简化VectorDrawable的路径,以便更加高效地绘制。


====Ending====