性能优化:VectorDrawable

针对不同的分辨率提供多张精度的图片会额外增加 APK 的大小,这个问题的解决方案是考虑使用 VectorDrawable,它仅仅只需要一个文件,能够动态生成对应分辨率的图片。

VectorDrawable通过XML文件描述图片的形状,大小,样式。

android_perf_6_vectordrawable_origin

通过这种方式,我们可以显著减少图片资源对安装包大小的影响。

android_perf_6_vectordrawable_dpi
android_perf_6_vectordrawable_dpi2

使用 VectorDrawable 还可以避免因为使用帧动画导致的图片资源过多的情况,如下图所示:

android_perf_6_vectordrawable_animation

前面介绍了 VectorDrawable(VD) 的优势,但是在使用 VectorDrawable 的时候,还是有以下的问题需要特别注意的?

  • 首先 VD 的加载有异于 JPEG/PNG 文件,图片文件可以依靠硬件进行纹理的渲染,而 VD 文件需要先进行加载解析,然后才能够进行纹理的渲染。
android_perf_6_vectordrawable_load
  • 其次 VD 文件适用于简单有规则的图片渲染,不适用于那些纹理过于复杂的图片,这样不仅仅会过度增加描述文件的复杂度还可能无法获取到想要的渲染效果。
android_perf_6_vectordrawable_simple
  • 最后,VD 文件中关于 Path 的描述需要尽量简化,复杂冗余的 Path 信息不仅对得到想要的图片没有益处,还增加了加载渲染的难度。
android_perf_6_vectordrawable_path
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值