由于Android系统存在多种分辨率,我们在使用图片时,往往需要准备ldpi、mdpi、hdpi、xhdpi等多种分辨率的图片,占用大量APK体积。
针对这种情况,本文介绍了如何VectorDrawable技术的优点,以及使用场景。
link
不合适的做法
JPEG
和PNG
是光栅化的图片格式,如果我们不希望在不同分辨率下出现图片模糊的情况,就必须准备多张图片,这会浪费APK体积。
VectorDrawable
VectorDrawable
则可以只用一个文件满足多种屏幕分辨率。它将图片分解为多个基本图形的组合,如下所示。
对于文章开头的三个圆形的场景,可以将占用空间从56K降低到2K,降低了96%。
使用VectorDrawable
还可以避免因使用帧动画,导致图片文件过多的情况
Caveats
加载
加载时,JPEG
、PNG
文件可以依靠硬件进行纹理渲染,而VectorDrawable
在处理时,需要先翻译成GPU指令,VD中的每一个基本图形,都会被作为一个图层处理。
复杂图像
VectorDrawable
不适用于处理复杂图像,对于下图的肖像,使用PNG
是更好的选择。
简化VectorDrawable
的路径,以便更加高效地绘制。