在Android平台上,除了我们熟知的属性动画(Animator),View动画(Animation),后面出的Transition动画,还有其他第三方出的动画库可以供我们使用:Lottie(Airbnb)、Pag(腾讯)
他们的官方地址分别为:
Lottie:
github: https://github.com/airbnb/lottie-android
文档:http://airbnb.io/lottie/#/
Pag:
Github: https://github.com/Tencent/libpag
文档:https://pag.art/docs/home.html
那么对于「原生通过代码开发动画」与「使用三方动画库」有什么优劣势呢?
类型 |
原生代码动画 |
三方库动画 |
优势 |
可以做组合动画 可以通过代码控制展示位置 可以直接作用于View 可以更改View的属性 占用的Apk空间更小 更容易做到复用 |
节省开发时间,设觉相关工作人员直接给出动画文件 动画文件中的元素可根据文档修改、配置。 有一定的可复用性,通过替换文件实现。 不太容易制作组合动画 大大节省研发成本 方便云控,可以通过下载动画文件,更新动画 |
劣势 |
复杂动画实现成本巨大:需要UI开发同时投入巨大成本。 |
1、需要多引入相关库,增加包体积。 2、由于是加载文件方式展示动画,有IO成本 3、如果库不支持网络加载,可能需要实现成本 4、缓存处理成本 5、内存占用成本 |
在实际应用过程中,大多数情况都是「原生动画」与「三方动画」共存的模式,这过程需要同时考虑:
-
研发成本
-
视觉效果
-
效果复杂度
-
可复用性
-
是否需要组合动画
-
是否有屏幕适配需求
我们的项目中用过lottie 动画,现在在逐步使用Pag动画。
与Lottie相比,Pag的优势在于,只需要一个pag文件即可(整体打包)。而Lottie需要json、图片等文件是分开存储的。