以下简书的文章介绍的很详细
研究了很长时间,最后我们直播项目放弃了使用Lottie,后续更新Lottie存在的问题!目前更正考虑使用SVGA Animation
当push出新的控制器或者程序进入后台的时候动画会停止,
animation stop after enter background
处理方式:
当程序进入后台的时候,就把动画停止掉,程序进入前台的话看需求是否继续播放上次的动画或者是移除掉动画
其实Android和iOS实现起来还是很容易的,但是配合原画调试导json格式的动画出耗费了一下时间,在这里罗列一下遇到的问题:
安装插件
大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
如何用AE导出程序员可以复用的代码
https://github.com/bigxixi/bodymovin
安装插件导出json的时候发现不能带有图层样式(如投影、发光等暂时都不支持)
简单来说就是不能含有光效! 我们的直播礼物都是很炫酷,含有渲染和粒子效果!这也导致了后续没有采用Lottie的直接原因!
这个https://github.com/syik/JR总结的很好!截个图粘贴在这里
Lottie的性能
以下是Lottie性能的官方的说明:
- 如果没有mask和mattes,那么性能和内存非常好,没有bitmap创建,大部分操作都是简单的cavas绘制。
- 如果存在mattes,将会创建2~3个bitmap。bitmap在动画加载到window时被创建,被window删除时回收。所以不宜在RecyclerView中使用包涵mattes或者mask的动画,否则会引起bitmap抖动。除了内存抖动,mattes和mask中必要的bitmap.eraseColor()和canvas.drawBitmap()也会降低动画性能。对于简单的动画,在实际使用时性能不太明显。
- 如果在列表中使用动画,推荐使用缓存LottieAnimationView.setAnimation(String, CacheStrategy) 。
这篇Lottie--让动画如此简单 QQ音乐技术团队出品的讲述的也很详细!
如何处理光效的
上述基本上就是使用Lottie中碰到的问题以及搜索到的比较详细的博客!描述过程中肯定有错误,也希望可以一起讨论