Prevent removeAllUdpateListeners from breaking the world (#1354)
Fixes #1337
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index 5d40e41..ff9b73d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -68,6 +68,14 @@
private final Set<ColorFilterData> colorFilterData = new HashSet<>();
private final ArrayList<LazyCompositionTask> lazyCompositionTasks = new ArrayList<>();
+ private final ValueAnimator.AnimatorUpdateListener progressUpdateListener = new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ if (compositionLayer != null) {
+ compositionLayer.setProgress(animator.getAnimatedValueAbsolute());
+ }
+ }
+ };
@Nullable
private ImageAssetManager imageAssetManager;
@Nullable
@@ -114,14 +122,7 @@
public static final int INFINITE = ValueAnimator.INFINITE;
public LottieDrawable() {
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- if (compositionLayer != null) {
- compositionLayer.setProgress(animator.getAnimatedValueAbsolute());
- }
- }
- });
+ animator.addUpdateListener(progressUpdateListener);
}
/**
@@ -629,6 +630,7 @@
public void removeAllUpdateListeners() {
animator.removeAllUpdateListeners();
+ animator.addUpdateListener(progressUpdateListener);
}
public void addAnimatorListener(Animator.AnimatorListener listener) {