一、json动画和组合动画的对比
(1)Json动画流畅度高,占用的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,如下图:
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博客