一、json动画和组合动画的对比

1Json动画流畅度高,占用的CPU比较高,不考虑CPU的状况,推荐运用2)组合动画占用的CPU比较低,不是很复杂的json动画能够用组合动画来替代
总的来说,更垂青UI效果的话,能够运用Json动画,用户体会更好;更垂青系统性能的话,能够运用组合动画来替代

二、json动画的运用

1. 在App的build.gradle中加入lottie库

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

2. 如果json动画中存多个图片,需要在工程app/src/main/下创立文件夹assets,如下图:

Android json动画和组合动画

3.在代码中运用如下

在xml中运用LottieAnimationView这个类

    <com.airbnb.lottie.LottieAnimationView
        android:id="@+id/lottieAnimationView"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:layout_marginStart="20dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/rl_btn"
        android:gravity="center" />

在Activity中运用

//设置data.json引用的图片资源文件夹称号,如果没有可不写
mBinding.lottieAnimationView.imageAssetsFolder = "images"
mBinding.lottieAnimationView.setAnimation("data.json")
mBinding.lottieAnimationView.loop(true)

代码控制 暂停,取消,开始

lottieAnimationView.pauseAnimation();
lottieAnimationView.cancelAnimation();
lottieAnimationView.playAnimation();

三、组合动画的运用AnimatorSet

private fun rotateAnim() {
    //旋转动画(最终两个为负数是逆时针)
    val rotate = ObjectAnimator.ofFloat(mBinding.imgMeeting1, "rotation", -0f, -360f)
    rotate.repeatCount =ValueAnimator.INFINITE
    rotate.interpolator = LinearInterpolator()
    //突变动画(不透明->透明->不透明)
    val alpha = ObjectAnimator.ofFloat( mBinding.imgMeeting1, "alpha", 1f, 0f, 1f)
    alpha.repeatCount =ValueAnimator.INFINITE
    alpha.interpolator = LinearInterpolator()
    alpha.duration = 2000
    //运用AnimatorSet组合起来
    animSet =  AnimatorSet();
    animSet.play(rotate)
        .with(alpha)
    animSet.duration = 4000
}

四、示例Demo

json动画和组合动画-Android文档类资源-CSDN文库

五、参阅:

json动画的更多运用参阅下面的博客:【Android — 动画】Lottie 动画的基本运用_android lottie动画_Kevin-Dev的博客-CSDN博客

组合动画运用参阅下面的博客: 【Android 】特点动画最全解析_android 特点动画_Teacher.Hu的博客-CSDN博客