lottie动画_Lottie动画库使用Demo

官网:https://lottiefiles.com

Gradle依赖:implementation 'com.airbnb.android:lottie:3.5.0'

在布局文件中配置

<com.airbnb.lottie.LottieAnimationView    android:id="@+id/animation_view"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    app:lottie_rawRes="@raw/button_switch"    app:lottie_autoPlay="true"    app:lottie_loop="true"    app:lottie_cacheStrategy="weak" />

lottie_rawRes:json资源路径

lottie_autoPlay:自动播放

lottie_loop:循环播放

lottie_cacheStrategy:使用缓存策略。None: 无缓存 ,Weak: 弱引用缓存 ,Strong: 强引用缓存

下载的json文件需要放在res/raw目录下

LottieAnimationView animationView = findViewById(R.id.animation_view);//在assets的json文件animationView.setAnimation("R.raw.button_switch");//设置动画循环播放animationView.setRepeatCount(LottieDrawable.INFINITE);//设置动画进度0f-->1fanimationView.setProgress();//设置动画的重复模式LottieDrawable.RESTART  LottieDrawable.REVERSEanimationView.setRepeatMode();//设置动画的最小进度和最大进度 (播放范围)animationView.setMinAndMaxProgress(30/177f, 53f/177f);//播放动画animationView.playAnimation();//暂停动画animationView.pauseAnimation();   //取消动画animationView.cancelAnimation(); //动画改变监听事件animationView.addAnimatorUpdateListener(animation -> {    //动画在运行时    if (animationView.isAnimating()) {    // Do something}    动画的进度到0.5f时    if (animationView.getProgress() == 0.5f){     // Do something           }});

通过ValueAnimator引擎设置动画运行速率

ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);        animator.setDuration(500);        animator.setInterpolator(new LinearInterpolator());animator.addUpdateListener(animation -> {    animationView.setProgress(animation.getAnimatedValue());});

案例

private LottieAnimationView animationView;//开关状态boolean switchStatus = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);     animationView = findViewById(R.id.animation_view);  //  animationView.setAnimation(R.raw.button_switch);    animationView.setAnimationFromUrl("https://assets3.lottiefiles.com/packages/lf20_vseol67g.json");    animationView.setProgress(120f/177f);    animationView.setOnClickListener(v->{        //30-->53 关-->开        //120-->177 开-->关       if (switchStatus){       //如果是开启状态,点击后关闭           switchStatus =false;           animationView.setMinAndMaxProgress(120f/177f, 1f);       }else {           switchStatus = true;           animationView.setMinAndMaxProgress(30/177f, 53f/177f);       }        animationView.playAnimation();        Toast.makeText(this, switchStatus ? "open":"close", Toast.LENGTH_SHORT).show();    });}
<com.airbnb.lottie.LottieAnimationView    android:id="@+id/animation_view"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    app:lottie_rawRes="@raw/button_switch" />

fd8e2dc412ac35f6154ea70f5d459fdf.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值