• 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 
getStartDelay()15   @Override public long getStartDelay() {
16     throw new UnsupportedOperationException("LottieAnimator does not support getStartDelay.");
17   }
18 
setStartDelay(long startDelay)19   @Override public void setStartDelay(long startDelay) {
20     throw new UnsupportedOperationException("LottieAnimator does not support setStartDelay.");
21   }
22 
setDuration(long duration)23   @Override public ValueAnimator setDuration(long duration) {
24     throw new UnsupportedOperationException("LottieAnimator does not support setDuration.");
25   }
26 
setInterpolator(TimeInterpolator value)27   @Override public void setInterpolator(TimeInterpolator value) {
28     throw new UnsupportedOperationException("LottieAnimator does not support setInterpolator.");
29   }
30 
addUpdateListener(ValueAnimator.AnimatorUpdateListener listener)31   public void addUpdateListener(ValueAnimator.AnimatorUpdateListener listener) {
32     updateListeners.add(listener);
33   }
34 
removeUpdateListener(ValueAnimator.AnimatorUpdateListener listener)35   public void removeUpdateListener(ValueAnimator.AnimatorUpdateListener listener) {
36     updateListeners.remove(listener);
37   }
38 
removeAllUpdateListeners()39   public void removeAllUpdateListeners() {
40     updateListeners.clear();
41   }
42 
addListener(Animator.AnimatorListener listener)43   public void addListener(Animator.AnimatorListener listener) {
44     listeners.add(listener);
45   }
46 
removeListener(Animator.AnimatorListener listener)47   public void removeListener(Animator.AnimatorListener listener) {
48     listeners.remove(listener);
49   }
50 
removeAllListeners()51   public void removeAllListeners() {
52     listeners.clear();
53   }
54 
notifyStart(boolean isReverse)55   void notifyStart(boolean isReverse) {
56     for (Animator.AnimatorListener listener : listeners) {
57       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
58         listener.onAnimationStart(this, isReverse);
59       } else {
60         listener.onAnimationStart(this);
61       }
62     }
63   }
64 
notifyRepeat()65   void notifyRepeat() {
66     for (Animator.AnimatorListener listener : listeners) {
67       listener.onAnimationRepeat(this);
68     }
69   }
70 
notifyEnd(boolean isReverse)71   void notifyEnd(boolean isReverse) {
72     for (Animator.AnimatorListener listener : listeners) {
73       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
74         listener.onAnimationEnd(this, isReverse);
75       } else {
76         listener.onAnimationEnd(this);
77       }
78     }
79   }
80 
notifyCancel()81   void notifyCancel() {
82     for (Animator.AnimatorListener listener : listeners) {
83       listener.onAnimationCancel(this);
84     }
85   }
86 
notifyUpdate()87   void notifyUpdate() {
88     for (ValueAnimator.AnimatorUpdateListener listener : updateListeners) {
89       listener.onAnimationUpdate(this);
90     }
91   }
92 }
93