Merge "Make sure the correct AnimatorListeners gets called"
diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java
index 1065ed8..f7a7403 100644
--- a/core/java/android/animation/AnimatorSet.java
+++ b/core/java/android/animation/AnimatorSet.java
@@ -704,7 +704,7 @@
}
- private class AnimatorSetListener implements AnimatorListener {
+ private static class AnimatorSetListener implements AnimatorListener {
private AnimatorSet mAnimatorSet;
@@ -714,7 +714,7 @@
public void onAnimationCancel(Animator animation) {
- if (!mTerminated) {
+ if (!mAnimatorSet.mTerminated) {
// Listeners are already notified of the AnimatorSet canceling in cancel().
// The logic below only kicks in when animations end normally
if (mAnimatorSet.mPlayingSet.size() == 0) {
@@ -736,7 +736,7 @@
Node animNode = mAnimatorSet.mNodeMap.get(animation);
animNode.mEnded = true;
- if (!mTerminated) {
+ if (!mAnimatorSet.mTerminated) {
List<Node> children = animNode.mChildNodes;
// Start children animations, if any.
int childrenSize = children == null ? 0 : children.size();
@@ -749,9 +749,9 @@
// end(); the logic below only kicks in when animations end normally
boolean allDone = true;
// Traverse the tree and find if there's any unfinished node
- int size = mNodes.size();
+ int size = mAnimatorSet.mNodes.size();
for (int i = 0; i < size; i++) {
- if (!mNodes.get(i).mEnded) {
+ if (!mAnimatorSet.mNodes.get(i).mEnded) {
allDone = false;
break;
}
@@ -759,9 +759,9 @@
if (allDone) {
// If this was the last child animation to end, then notify listeners that this
// AnimatorSet has ended
- if (mListeners != null) {
+ if (mAnimatorSet.mListeners != null) {
ArrayList<AnimatorListener> tmpListeners =
- (ArrayList<AnimatorListener>) mListeners.clone();
+ (ArrayList<AnimatorListener>) mAnimatorSet.mListeners.clone();
int numListeners = tmpListeners.size();
for (int i = 0; i < numListeners; ++i) {
tmpListeners.get(i).onAnimationEnd(mAnimatorSet);