最近学习动画,了解到Android的Lottie,GitHub源码
常用方法
- 监听动画进度
lottieAnimationView.addAnimatorUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
// 判断动画加载结束
if (valueAnimator.getAnimatedFraction() == 1f) {
if (dialog.isShowing() && getActivity() != null)
dialog.dismiss();
}
}
});
- 暂停/取消/播放
lottieAnimationView.pauseAnimation();
lottieAnimationView.cancelAnimation();
lottieAnimationView.playAnimation();
- 循环/播放某个部分
lottieAnimationView.loop(true);
播放动画某个部分
setMinFrame(...)
setMaxFrame(...)
setMinProgress(...)
setMaxProgress(...)
setMinAndMaxFrame(...)
setMinAndMaxProgress(...)
- 硬件加速
lottieAnimationView.useHardwareAcceleration(true)
- 缓存问题
按照GC的引用强度,可以划分为强引用缓存和弱引用缓存
// 在动画文件加载完成后会根据设置的缓存策略缓存动画,方便下次使用
lottieAnimationView.setAnimation(animation, LottieAnimationView.CacheStrategy.Strong); //强缓存
lottieAnimationView.setAnimation(animation, LottieAnimationView.CacheStrategy.Weak); //弱缓存
根据进度缓存,为下次播放作准备
lottieAnimationView.setProgress(progress); //设置当前进度
lottieAnimationView.buildDrawingCache(); //强制缓存绘制数据
Bitmap image = lottieAnimationView.getDrawingCache(); //获取当前绘制数据
优缺点
😊优点:
- 支持多平台,可在不同的平台实现相同的效果
参考文章: