前言

我们都知道,安卓里面有三种基本的播放动画方式:
帧动画,属性动画,补间动画
今天介绍一种新的实现方式:Lottie动画
Lottie是爱彼迎开源的一个动画框架。可以支持iOS、Android 和 React Native ,
可实时渲染 After Effects 动画,让应用程序使用动画就像使用静态图像一样轻松。
这波博客主要介绍基本的使用,文末也会贴上相关的资料

导入方式

导入依赖的方式比较简单:

implementation 'com.airbnb.android:lottie:5.2.0'

我这里用的是5.2.0的版本

基本使用

Lottie动画支持XML配置和代码配置,如果要在xml里面写,就可以像这样:

    <com.airbnb.lottie.LottieAnimationViewandroid:id="@+id/animationView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:scaleType="centerInside"app:lottie_autoPlay="true"app:lottie_fileName="anim/item_gift_jd_new_selected/index.json"app:lottie_imageAssetsFolder="anim/item_gift_jd_new_selected/images"app:lottie_loop="true" />

其实LottieAnimationView继承的也就是一个AppCompatImageView
常用的xml属性有:
lottie_fileName :在app/src/main/assets目录下的动画,以json文件名。
lottie_rawRes:存放在app/src/main/res/raw 目录下的json动画
app:lottie_rawRes,app:lottie_fileName这两个属性基本相似。
lottie_loop:动画是否循环播放,默认不循环播放。
lottie_autoPlay:动画是否自动播放,默认不自动播放。
lottie_imageAssetsFolder:动画所依赖的图片目录,在app/src/main/assets/目录下的子目录,该子目录存放所有图片。
lottie_colorFilter :设置动画的着色颜色
lottie_repeatCount :重复次数,当你设置-1的时候就代表相应的循环了!
lottie_scale :设置动画的比例
lottie_repeatMode: 设置动画的重复模式RESTART:重复、REVERSE:反向

当然,更多的动态配置还是可以在代码里写的,比如这样:

        LottieAnimationView animationView1 = findViewById(R.id.animationView1);animationView1.setImageAssetsFolder("anim/item_gift_jd_new_selected/images");animationView1.setAnimation("anim/item_gift_jd_new_selected/index.json");

还有一些基本的API如下:
加载网络的资源
setAnimationFromUrl(String url)
设置循环次数
setRepeatCount(int count)
设置循环模式(LottieDrawable.INFINITE,LottieDrawable.RESTART,LottieDrawable.REVERS,默认RESTART)
setRepeatMode(int)
是否无限循环
loop(boolean loop)
设置最大帧和最小帧
(1.frame从0开始计算
2.播放的帧范围为:[minFrame, maxFrame),不包含第maxFrame帧)
setMinAndMaxFrame(int minFrame, int maxFrame)
播放
lottieAnimationView.playAnimation()
暂停播放
lottieAnimationView.pauseAnimation()
取消播放
lottieAnimationView.cancelAnimation()
重启动画
animationView.resumeAnimation();
设置X轴方向上的缩放比例,0f为不可见,1f原始大小 Ps.原setScale方法在2.0.0版本后已弃用
animationView.setScaleX(0.5f)
设置Y轴方向上的缩放比例
animationView.setScaleY(0.5f)
Lottie内部有两个缓存map(强引用缓存,弱引用缓存),在动画文件加载完成后会根据设置的缓存策略缓存动画,方便下次使用。
lottieAnimationView.setAnimation(animation, LottieAnimationView.CacheStrategy.Strong) //强缓存
lottieAnimationView.setAnimation(animation, LottieAnimationView.CacheStrategy.Weak) //弱缓存
LottieAnimationView.CacheStrategy.None) //默认
设置当前进度
lottieAnimationView.setProgress(progress)
强制缓存绘制数据
lottieAnimationView.buildDrawingCache()
获取当前绘制数据
Bitmap image = lottieAnimationView.getDrawingCache()
Lottie动画还提供了很多监听的api,下面继续介绍

常用监听方法

addLottieOnCompositionLoadedListener:动画加载完成监听
setFailureListener:动画加载失败回调
addAnimatorUpdateListener:动画进度监听回调
addAnimatorListener:同上,只不过上面是监听具体的值,这边是有四个回调方法(start,end,cance,repeat)
addAnimatorPauseListener:只关注暂停和恢复的回调

优缺点

优点:
1.由于将动画变成了json字符串,相比几M体积的gif图,等质量下的压缩率达到80%及以上。
2.支持云端动画资源加载,上线新的动画效果不需要发版
3.支持实时渲染 After Effects 动画,让 app 加载动画像加载图片一样简单。
4.因为Lottie是利用json文件生成动画,从而避免了不同分辨率、不同设备尺寸上面动画效果存在差异的问题。
5.拿到动画.json文件后,研发可以灵活的自行修复动画的颜色、路径等数据,自行扩展
6.拥有完整丰富的API,除了常规的播放、控制进度、暂停控制,还可以缓存、添加额外的原生UI
7.在未开启硬件加速的情况下,帧率、内存,CPU都比属性动画差,开启硬件加速后,性能差不多。

缺点:
1.Lottie尚不支持效果菜单中的表达式或任何效果。
2.使用alpha遮罩会影响性能。 如果你使用的是alpha遮罩或alpha倒置遮罩,遮罩的大小会对性能产生更大的影响。
3.Lottie还不支持阴影,颜色叠加或笔触等图层效果。

相关资料

乐蒂文档
Android -Lottie加载动画喂饭指南
Lottie动画 轻松使用

(原创)Lottie动画使用介绍相关推荐

  1. 程序员也想改 Lottie 动画?是的!

    一.前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好.完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿 ...

  2. lottie 动画_使用After Effects和Lottie制作网络动画而不会损失质量

    lottie 动画 A quick getting started guide 快速入门指南 I recently took on a project where the team wanted to ...

  3. php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...

    基于JQuery制作的产品广告效果 效果图.如下: 动画效果介绍:这组广告效果是打开页面后图片会自动播放,从1-5共计5张图片,如果属标放到右下角的1.2.3.4.5列表上,可以自由进行切换到自己想看 ...

  4. 在VUE中使用Lottie动画

    Lottie简介 官方介绍:Lottie is a mobile library for Web, and iOS that parses Adobe After Effects animations ...

  5. Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示

    获取 Lottie 动画文件 lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件. 我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景. 下载 ...

  6. Jetpack Compose 中使用 Lottie 动画

    从事 Android 开发的 都知道 airbnb 的 Lottie 库,如今它也支持在 Jetpack Compose 中使用了. http://airbnb.io/lottie/#/android ...

  7. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  8. [原创]Paros工具培训介绍

    [原创]Paros工具培训介绍 Paros Proxy工具介绍 Paros proxy是一个对Web应用程序的漏洞进行评估的代理程序,它支持动态地查看/编辑 HTTP/HTTPS信息,可以改变cook ...

  9. 动画 java_Java动画程序介绍

    Java动画程序介绍 java动画的实现,首先用java.awt包中graphics类的drawimage()方法在屏幕画出图象,然后通过定义一个线程,让该线程睡眠一段时间,到时后再切换成另外一幅图象 ...

  10. flutter 动画json_Flutter 50: 图解动画小插曲之 Lottie 动画

    和尚在一年前整理过一点 Lottie 在 Android 中的应用,现在 Flutter 也有相关的插件帮助我们快速简单的应用场景复杂的 Lottie 动画: 和尚在官网查询之后发现官网推荐了两个开源 ...

最新文章

  1. TestBird烧烤趴,几维安全专属报名通道
  2. jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了
  3. Faster-RCNN 自己的数据训练
  4. AI圈最新深度学习量化算法!
  5. 第6天-css笔记 三大定位-定位 子绝父相 与精灵图
  6. scala中命名参数函数_Scala中带有命名参数的函数
  7. 第三章-电商项目-优化评论分页查询
  8. gcc/g++超详细上手教程
  9. 搜索算法-广度优先和深度优先搜索
  10. 使用 JS刷新框架子页面
  11. C语言和C++的区别是什么?到底学哪种好
  12. 计算机与科学 研究生考试内容,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  13. STM32F103无源蜂鸣器驱动程序
  14. 树莓派管脚编码c语言,树莓派IO引脚定义 | 北岛夜话
  15. linux命令tar -xzvf等
  16. python实现协同过滤算法
  17. 2021-2027全球与中国兽医临床试验业务市场现状及未来发展趋势
  18. 强大的支持多文件上传的jQuery文件上传插件Uploadify
  19. 浅谈微信公众平台和微信开放平台的区别
  20. python微信朋友圈刷图_用python中的itchat可视化微信朋友圈

热门文章

  1. 初中计算机教案ps,初中信息技术《认识Photoshop CS2的工作界面》教案
  2. 01web前端笔试试题
  3. 计算机画图星星怎么画,电脑画图工具 奇奕画王使用教程(附序列号)
  4. 微信小程序地图生态概述
  5. 微信公众号支付JSAPI
  6. Java之链表的反转
  7. 面试必备:消息队列原理和选型(荣耀典藏版)
  8. 【C++设计模式】抽象工厂模式
  9. 仿弹个课教育类APP项目,客户端+服务端
  10. 全球与中国高亮度LED灯市场现状及未来发展趋势