am 3da1fa50: am 25f606a0: Merge "Fix supporting modifying listeners in callbacks" into lmp-dev

* commit '3da1fa506599e1d6fb70937277ce29243f083137':
  Fix supporting modifying listeners in callbacks
This commit is contained in:
John Reck
2014-08-21 20:40:54 +00:00
committed by Android Git Automerger

View File

@@ -19,6 +19,7 @@ package android.view;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.animation.Animator.AnimatorListener;
import android.graphics.Canvas;
import android.graphics.CanvasProperty;
import android.graphics.Paint;
@@ -202,7 +203,7 @@ public class RenderNodeAnimator extends Animator {
mViewTarget.mTransformationInfo.mAlpha = mFinalValue;
}
final ArrayList<AnimatorListener> listeners = getListeners();
final ArrayList<AnimatorListener> listeners = cloneListeners();
final int numListeners = listeners == null ? 0 : listeners.size();
for (int i = 0; i < numListeners; i++) {
listeners.get(i).onAnimationStart(this);
@@ -220,7 +221,7 @@ public class RenderNodeAnimator extends Animator {
getHelper().removeDelayedAnimation(this);
nEnd(mNativePtr.get());
final ArrayList<AnimatorListener> listeners = getListeners();
final ArrayList<AnimatorListener> listeners = cloneListeners();
final int numListeners = listeners == null ? 0 : listeners.size();
for (int i = 0; i < numListeners; i++) {
listeners.get(i).onAnimationCancel(this);
@@ -329,13 +330,22 @@ public class RenderNodeAnimator extends Animator {
protected void onFinished() {
mFinished = true;
final ArrayList<AnimatorListener> listeners = getListeners();
final ArrayList<AnimatorListener> listeners = cloneListeners();
final int numListeners = listeners == null ? 0 : listeners.size();
for (int i = 0; i < numListeners; i++) {
listeners.get(i).onAnimationEnd(this);
}
}
@SuppressWarnings("unchecked")
private ArrayList<AnimatorListener> cloneListeners() {
ArrayList<AnimatorListener> listeners = getListeners();
if (listeners != null) {
listeners = (ArrayList<AnimatorListener>) listeners.clone();
}
return listeners;
}
long getNativeAnimator() {
return mNativePtr.get();
}