• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.airbnb.lottie.utils;
2 
3 import android.animation.Animator;
4 import android.animation.TimeInterpolator;
5 import android.animation.ValueAnimator;
6 import android.os.Build;
7 
8 import java.util.Set;
9 import java.util.concurrent.CopyOnWriteArraySet;
10 
11 public abstract class BaseLottieAnimator extends ValueAnimator {
12   private final Set<ValueAnimator.AnimatorUpdateListener> updateListeners = new CopyOnWriteArraySet<>();
13   private final Set<AnimatorListener> listeners = new CopyOnWriteArraySet<>();
14   private final Set<Animator.AnimatorPauseListener> pauseListeners = new CopyOnWriteArraySet<>();
15 
16 
getStartDelay()17   @Override public long getStartDelay() {
18     throw new UnsupportedOperationException("LottieAnimator does not support getStartDelay.");
19   }
20 
setStartDelay(long startDelay)21   @Override public void setStartDelay(long startDelay) {
22     throw new UnsupportedOperationException("LottieAnimator does not support setStartDelay.");
23   }
24 
setDuration(long duration)25   @Override public ValueAnimator setDuration(long duration) {
26     throw new UnsupportedOperationException("LottieAnimator does not support setDuration.");
27   }
28 
setInterpolator(TimeInterpolator value)29   @Override public void setInterpolator(TimeInterpolator value) {
30     throw new UnsupportedOperationException("LottieAnimator does not support setInterpolator.");
31   }
32 
addUpdateListener(ValueAnimator.AnimatorUpdateListener listener)33   public void addUpdateListener(ValueAnimator.AnimatorUpdateListener listener) {
34     updateListeners.add(listener);
35   }
36 
removeUpdateListener(ValueAnimator.AnimatorUpdateListener listener)37   public void removeUpdateListener(ValueAnimator.AnimatorUpdateListener listener) {
38     updateListeners.remove(listener);
39   }
40 
removeAllUpdateListeners()41   public void removeAllUpdateListeners() {
42     updateListeners.clear();
43   }
44 
addListener(Animator.AnimatorListener listener)45   public void addListener(Animator.AnimatorListener listener) {
46     listeners.add(listener);
47   }
48 
removeListener(Animator.AnimatorListener listener)49   public void removeListener(Animator.AnimatorListener listener) {
50     listeners.remove(listener);
51   }
52 
removeAllListeners()53   public void removeAllListeners() {
54     listeners.clear();
55   }
56 
notifyStart(boolean isReverse)57   void notifyStart(boolean isReverse) {
58     for (Animator.AnimatorListener listener : listeners) {
59       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
60         listener.onAnimationStart(this, isReverse);
61       } else {
62         listener.onAnimationStart(this);
63       }
64     }
65   }
66 
addPauseListener(AnimatorPauseListener listener)67   @Override public void addPauseListener(AnimatorPauseListener listener) {
68     pauseListeners.add(listener);
69   }
70 
removePauseListener(AnimatorPauseListener listener)71   @Override public void removePauseListener(AnimatorPauseListener listener) {
72     pauseListeners.remove(listener);
73   }
74 
notifyRepeat()75   void notifyRepeat() {
76     for (Animator.AnimatorListener listener : listeners) {
77       listener.onAnimationRepeat(this);
78     }
79   }
80 
notifyEnd(boolean isReverse)81   void notifyEnd(boolean isReverse) {
82     for (Animator.AnimatorListener listener : listeners) {
83       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
84         listener.onAnimationEnd(this, isReverse);
85       } else {
86         listener.onAnimationEnd(this);
87       }
88     }
89   }
90 
notifyCancel()91   void notifyCancel() {
92     for (Animator.AnimatorListener listener : listeners) {
93       listener.onAnimationCancel(this);
94     }
95   }
96 
notifyUpdate()97   void notifyUpdate() {
98     for (ValueAnimator.AnimatorUpdateListener listener : updateListeners) {
99       listener.onAnimationUpdate(this);
100     }
101   }
102 
notifyPause()103   void notifyPause() {
104     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
105       for (AnimatorPauseListener pauseListener : pauseListeners) {
106         pauseListener.onAnimationPause(this);
107       }
108     }
109   }
110 
notifyResume()111   void notifyResume() {
112     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
113       for (AnimatorPauseListener pauseListener : pauseListeners) {
114         pauseListener.onAnimationResume(this);
115       }
116     }
117   }
118 }
119