Android Lottie动画库介绍

        目前支持android上gif动画主要存在两种方式:第一种为将动画做成一张张图片然后进行快速切换,从而形成动画效果,第二种将动画变成json字符串,利用开源库进行解析,然后进行显示从而达到动画效果。其中两种方式的典型代表库为:android-gif-drawable和Lottie。

android-gif-drawable开源库地址:https://github.com/koral--/android-gif-drawable

Lottie开源库地址:https://github.com/airbnb/lottie-android


Lottie是Airbnb最近开源的一个动画库,它能够同时支持iOS,Android与ReactNative的开发.它的原理是利用Adobe After Effects软件做出动画,然后再用bodyMovin插件将动画导出成为一个json字符串,最后用Airbnb的开源库Lottie进行json文件解析最后绘制到设备上面,显而易见这个动画库的好处就是将动画变成了json字符串,极大地减少了文件大小,从而对apk进行了“瘦身”,所以下面总结了一下使用Lottie动画库进行动画显示的好处:

1、由于将动画变成了json字符串,极大地减少了应用大小。

2、因为Lottie是利用json文件生成动画,从而避免了不同分辨率、不同设备尺寸上面动画效果存在差异的问题。

3、只需要进行一动画绘制,生成一次json文件,从而可以在所有端进行使用(android,ios,web)


       上面介绍了Lottie动画库的好处,那么现在我们来具体了解Lottie动画库的工作原理和使用流程:

首先我们需要有一个用AE生成的json动画文件,这个文件由UI美工进行提供,不需要我们程序员进行生成(感兴趣的可以自己试试,反正我是不知道怎么弄),我们尝试打开json文件,得到如下的结果:


        发现和普通的json文件没有任何区别,它是由layers数组和其他关键数组组成,学过ps的知道一张图片是有多个图层叠加而成,这里的动画也是如此,通过AE做成动画,然后由插件将图层、图片大小、动画时间、关键帧等信息输出到json字符串中,所以我们只需要解析json文件,将关键信息解析出来然后把图层一层一层绘制上去,然后一帧一帧的切换就形成了动画。

我们将Lottie动画下载下来阅读源码,得出Lottie的大致框架图如下:


从图中可以看出Lottie库主要有三个重要的类型:AnimatableValue、KeyframeAnimation、AnimatableLayer,其中AnimatableLayer是继承Drawable类,所以真正进行动画绘制是依靠Drawable机制进行处理的,所有的关键数组最后都会封装到对应的AnimatableLayer中进行处理,其中流程图大致如下:

接下来我们从源码角度来了解Lottie的工作过程,首先我们知道Lottie显示动画主要有两种方式:

第一种方式是在xml中配置:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值