针对不同的分辨率提供多张精度的图片会额外增加 APK 的大小,这个问题的解决方案是考虑使用 VectorDrawable,它仅仅只需要一个文件,能够动态生成对应分辨率的图片。
VectorDrawable通过XML文件描述图片的形状,大小,样式。
通过这种方式,我们可以显著减少图片资源对安装包大小的影响。
使用 VectorDrawable 还可以避免因为使用帧动画导致的图片资源过多的情况,如下图所示:
前面介绍了 VectorDrawable(VD) 的优势,但是在使用 VectorDrawable 的时候,还是有以下的问题需要特别注意的?
- 首先 VD 的加载有异于 JPEG/PNG 文件,图片文件可以依靠硬件进行纹理的渲染,而 VD 文件需要先进行加载解析,然后才能够进行纹理的渲染。
- 其次 VD 文件适用于简单有规则的图片渲染,不适用于那些纹理过于复杂的图片,这样不仅仅会过度增加描述文件的复杂度还可能无法获取到想要的渲染效果。
- 最后,VD 文件中关于 Path 的描述需要尽量简化,复杂冗余的 Path 信息不仅对得到想要的图片没有益处,还增加了加载渲染的难度。