Lottie使用介绍:(二版未完再续)

20 篇文章 0 订阅

在工作中产品提出了这么一个一个动画需求,如下图:

切换动画

其实这个需求本来直接用属性动画就解决了,但是为了学学Lottie就强行用了一把。(然后最后的结果还是用了属性动画,因为Lottie的交互性不强,或者说我不太会用;感觉Lottie动画主要用来展示性的动画,交互功能比较多的动画个人还是喜欢用属性动画);

1.导入lottie库:

//lottie框架
compile'com.airbnb.android:lottie:2.1.0'

2.导入json文件到assets文件夹:(这个json文件找动效设计师要)

3.xml文件中使用:

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/lottie_indicator"
    android:layout_width="41.2dp"
    android:layout_height="8.6dp" />

4.初始化控件:

@Bind(R.id.lottie_indicator)
LottieAnimationView lottie_indicator;

4.lottie使用方法介绍:

        //初始化,引入json
        LottieComposition.Factory.fromAssetFileName(mFragment.getActivity(), "scheme_data_animotor1.json", new OnCompositionLoadedListener() {
            @Override
            public void onCompositionLoaded(@Nullable LottieComposition lottieComposition) {
                //这句话是关键,相当于将空间和json绑定
                lottie_indicator.setComposition(lottieComposition);
            }
        });

        //添加动画更新(进度)的监听,这里的监听可以理解为播放进度(注意:这个进度并不一定是等分(0.1,0.2,0.3...)可能是0.12343,0.3213)
        lottie_indicator.addAnimatorUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                float animatedFraction = valueAnimator.getAnimatedFraction();
            }
        });

        lottie_indicator.addAnimatorListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animator) {
                //动画开始播放的时候会调用
            }

            @Override
            public void onAnimationEnd(Animator animator) {
                //动画结束的时候回调用
            }

            @Override
            public void onAnimationCancel(Animator animator) {
                //动画主动取消的时候会调用
            }

            @Override
            public void onAnimationRepeat(Animator animator) {
                //loop的时候会调用,注意是重新播放的时候会调用
            }
        });

        //动画的播放
        //设置动画的起始播放位置,只能设置开始位置,不能设置结束位置,不写默认0
        lottie_indicator.setProgress(0);
        //播放
        lottie_indicator.setVisibility(View.VISIBLE);
        lottie_indicator.playAnimation();

        //暂停
        //暂停的实质是,保存当前的progress,然后再cancel这个动画,下次播放的时候,从保存的progress开始播放
        lottie_indicator.pauseAnimation();

        //结束播放,取消播放,终止播放
        lottie_indicator.cancelAnimation();
        lottie_indicator.setVisibility(View.INVISIBLE);

        //倒放,回放
        lottie_indicator.reverseAnimation();

        //不断的重复播放,轮播
        lottie_indicator.loop(true);

        //动画是否在播放
        boolean isAnimating = lottie_indicator.isAnimating();

        //动画播放进度
        long duration = lottie_indicator.getDuration();

        //特别注意,在当前activity销毁时,保持好的习惯
        lottie_indicator.cancelAnimation();

        //移除监听
        //lottie_indicator.removeUpdateListener();
        //lottie_indicator.removeAnimatorListener();

总结:我把大概的方法都放在这了,大家在用的过程中可以根据自己的需求个性化使用;

考据资源:

https://www.jianshu.com/p/2865812fed41

https://zhuanlan.zhihu.com/p/68623762

https://www.jianshu.com/p/90abf1d21444

https://github.com/airbnb/lottie-android

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值