Android json动画和组合动画

1,596 阅读1分钟

一、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,如下图:

1.jpg

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博客