Android Lottie动画库全解析

Lottie简介

Lottie是一个适用于Android,iOS,Web和Windows的库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并在移动设备和Web上原生渲染它们!

在Android中应用

Android通过Airbnb的开源项目lottie-android实现,最低支持 API 16;

查看Android中lottie-android版本号:http://airbnb.io/lottie/#/android?id=sample-app或者https://github.com/airbnb/lottie-android/releases

应用

1,Model的build.gradle引入依赖

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

2,静态使用

2.1,在XML补给文件中加入

<com.airbnb.lottie.LottieAnimationView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
app:lottie_fileName="data.json" 
app:lottie_loop="true" 
app:lottie_autoPlay="true"/>
  • lottie_repeatCount 动画重复次数
  • lottie_repeatMode 动画重复模式
  • lottie_scale 放大倍数
  • lottie_fileName 调用的assets下的Json文件名
  • lottie_loop 是否开启循环动画
  • lottie_autoPlay 是否开启自动播放

2.2,在项目的assets(没有就新建此目录)下放入UI或者自己制作或者Lottie官网下载的JSON文件;运行下项目就可以看到效果了;这是最简单的使用了;

3,动态使用

在代码中使用

LottieAnimationView animation_view5= findViewById(R.id.animation_view5); 
//设置动画JSON文件
animation_view5.setAnimation(R.raw.roatating_light);
//设置循环播放
animation_view5.loop(true);
//播放动画
animation_view5.playAnimation();

4,监听

4.1,整个生命周期的监听


animation_view5.addAnimatorListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animation) {
        Log.d(TAG, "开始");
    }

    @Override
    public void onAnimationEnd(Animator animation) {
        Log.d(TAG, "结束");
    }

    @Override
    public void onAnimationCancel(Animator animation) {
        Log.d(TAG, "取消");
    }

    @Override
    public void onAnimationRepeat(Animator animation) {
        Log.d(TAG, "重复");
    }
});



4.2,过程监听

animation_view5.addAnimatorUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                
            }
        });

5,Lottie可以从以下位置加载动画:

src/main/res/raw 中的json动画。

src/main/assets 中的json文件。

src/main/assets中的zip文件。

src/main/assets中的dotLottie文件。

网络上的json或zip文件的地址。

json字符串。来源可以来自任何地方;

JSON文件或zip文件的InputStream流。

6,常用的API介绍

判断是否动画正在运行中    isAnimating()

设置动画的进度值(float值)  setProgress();

监听动画进度  addAnimatorUpdateListener

开始动画       playAnimation()

动态设置json文件  setComposition()

取消动画     cancelAnimation()

暂停动画     pauseAnimation()

7,核心类

LottieAnimationView 继承ImageView,是加载Lottie动画的默认和最简单方法;

LottieDrawable 与LottieAnimationView具有大多数相似的API,可以在任何View上使用它;

LottieComposition动画json数据的对象模型,通过LottieCompostion实现对动画的分解;

异常:

java.lang.IllegalStateException: Missing values for keyframe.

解决办法:

build.gradle引入的依赖版本号要大于3.0.0,目前最新的版本:3.5.0;由于gradle中使用的lottie库版本过低的原因,Lottie 3.0和Bodymovin 5.5有一些重要的json优化,可以节省json大小和解析速度的1/3。 但是,必须在3.0以上生效,否则就在bodymovin设置中启用“导出为旧格式”(Bodymovin为AE导出动画的插件)所以我们目前在官网资源库中下载的lottie动画资源大部分是需要Lottie 3.0以上才可以使用的,所以需要将自己依赖的Lottie动画库版本进行升级;

官方文档

Lottie官网:https://lottiefiles.com/

Android Lottie框架官网:http://airbnb.io/lottie/#/

开源框架Github:https://github.com/airbnb/lottie-android

JSON转 dotLottie  :https://dotlottie.io/resources/json-to-dotLottie/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_qq_252390816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值