Android使用lottie加载json动画的示例代码
作者:翻滚吧李博 发布时间:2021-06-20 00:47:01
Lottie
Lottie 是 Airbnb 开源的一个动画项目,它支持 iOS, mac OS Android RN,由于某些复杂动画的实现,往往会写很多的 code 来实现它,而且调试动画的效果会比较花费时间。用它来解决某些动画会带来很大的便利。
设计师在After Effects 设计好相关的动画,然后安装上BodyMovin 这个插件,这个插件,可以帮导出动画效果的 JSON 文件,然后我们可以通过 Lottie 来加载相关的 JSON 文件来实现动画效果。
优势
开发可以方便的实现动画,节约调试动画效果时间等,不用写一大堆 code 去实现动画,只要设计给相关的 JSON 文件就可以了。
多个平台可以共用,例如 iOS 和 Android,公用一个动画。
可以通过 URL 的方式加载 JSON 文件,来替换客户端动画,不用发版本了
设计想了一个 * 炸天的动画,然后给到开发,开发说这个实现不了,或者说很费时间,然后让设计用这种方式去实现。
对于 iOS 来说支持 ViewController 转场动画
iOS 平台上用 Core Animation 做矢量动画。性能不错,而且有缓存
对比于用 GIF 动画,手写动画,轻量,性能和存储上都更佳。
不足之处
iOS 版本要 >= 8.0 才可以使用。不支持 7.x
对于一些交互性的动画,支持不是很好。主要是对于播放性的动画
Bodymovin 插件待完善,仍然有部分 AE 效果无法成功导出
动画无法被编辑,加载下来是什么样子,就原封不动
github代码传送门 https://github.com/18380438200/LottieAnim
先上效果图,这个是做的一个仿抖音的点赞动画:
众所周知,属性动画、补间动画通常只能做一些效果简单的,而做复杂的动画可采用gif图,帧动画,但是这样资源空间增大导致apk增大不小。而加载json文件实现动画就完美解决以上问题。
设计师AE导出Json文件,Lotti 解析Json文件后调Core Animation的API绘制渲染。所以让你们公司的UI去学一学AE吧,多们技能好防身。
Lottie开源库地址:一个集Android、Ios、React Native与Web平台于一身的女子。
https://github.com/airbnb/lottie-android
使用方式:
引入库
compile 'com.airbnb.android:lottie:1.0.1'
创建assets文件夹,将json文件放入其中。
引用LottieAnimationView控件
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie_likeanim"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:lottie_fileName="likeanim.json"
app:lottie_loop="true"
android:layout_centerInParent="true"/>
常用属性:
app:lottie_fileName="likeanim.json" 加载json的文件名
app:lottie_loop="true" 是否循环播放
app:lottie_autoPlay="true" 是否自动播放
常用操作:
lottieLike.playAnimation(); //播放
lottieLike.pauseAnimation(); //暂停
lottieLike.cancelAnimation(); //取消
lottieLike.getDuration(); //获取动画时长
lottieLike.addAnimatorListener(new Animator.AnimatorListener() { //添加动画监听
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
来源:https://www.jianshu.com/p/1f913bd2f6f1


猜你喜欢
- 简介java 8 stream作为流式操作有两种操作类型,中间操作和终止操作。这两种有什么区别呢?我们看一个peek的例子:Stream&l
- 本文实例为大家分享了Android Camera实现可复用相机组件的具体代码,供大家参考,具体内容如下若自己的应用需要使用camera,有两
- 前言在工作中有遇到这样的需求,需要把hmtl的富文本内容,进行深色模式适配。原先的富文本内容是在直接在webview上进行展示。解决思路:替
- 目录springboot中定时任务的创建springboot通过注解创建定时任务首先引入pom直接上代码来一个栗子@Scheduled注解的
- 在线用户使用HttpSessionListener * 统计 每当一个session会话建立 在线用户人数+1每当一
- 目录一.什么是负载均衡二.负载均衡的简单分类三.为什么需要做负载均衡四.springCloud如何开启负载均衡五.IRule1.Random
- 本文研究的主要是Flask实现异步非阻塞请求功能,具体实现如下。最近做物联网项目的时候需要搭建一个异步非阻塞的HTTP服务器,经过查找资料,
- 在Android串口通信:基本知识梳理的基础上,我结合我项目中使用串口的实例,进行总结;Android使用jni直接进行串口设备的读写网上已
- .NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种
- 首先什么是注解?@Override就是注解,它的作用是:1、检查是否正确的重写了父类中的方法。 2、标明代码,这是一个重写的方法。1、体现在
- C#事件实例详解C#和JAVA有许多相似的地方,设计思想差不多,语法及其相像,均传承自面向对象设计思想,灵感来自C++并取其精华去其“糟粕(
- 前言springboot提供了 spirng-boot-starter-test 以供开发者使用单元测试,在引入 spring-boot-s
- 本文实例讲述了Android编程实现简单文件浏览器功能。分享给大家供大家参考,具体如下:运行效果:布局:<LinearLayout x
- 一、概念Tomcat的虚拟目录即在服务器上另选择一个webapps之外的文件夹存放项目文件,通过配置Tomcat的属性,实现访问。注:未配置
- Android 资源 id详解我们平时获取资源是通过 findViewById 方法进行的,比如我们常在onCreate方法中使用这样的语句
- 问题怎么配置springBoot 内置tomcat,才能使得自己的服务效率更高呢?基础配置Spring Boot 能支持的最大并发量主要看其
- 一、多媒体应用架构1.1 音视频传统应用架构通常,传统的播放音频或视频的多媒体应用由两部分组成:播放器:用于吸收数字媒体并将其呈现为视频和/
- 1、前言  原先的页面访问地址为:http://127.0.0.1:8888/office/schdul
- 好久没有做web了,JSON目前比较流行,闲得没事,所以动手试试将对象序列化为JSON字符(尽管DotNet Framework
- 1.字节码增强技术字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。参考地址2.常见技术技术分类类型静态增强Asp