Loading core/java/android/animation/LayoutTransition.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -600,6 +600,18 @@ public class LayoutTransition { // Remove the animation from the cache when it ends // Remove the animation from the cache when it ends anim.addListener(new AnimatorListenerAdapter() { anim.addListener(new AnimatorListenerAdapter() { private boolean canceled = false; private boolean canceled = false; @Override public void onAnimationStart(Animator animator) { if (mListeners != null) { for (TransitionListener listener : mListeners) { listener.startTransition(LayoutTransition.this, parent, child, changeReason == APPEARING ? CHANGE_APPEARING : CHANGE_DISAPPEARING); } } } @Override @Override public void onAnimationCancel(Animator animator) { public void onAnimationCancel(Animator animator) { // we remove canceled animations immediately, not here // we remove canceled animations immediately, not here Loading @@ -607,11 +619,19 @@ public class LayoutTransition { child.removeOnLayoutChangeListener(listener); child.removeOnLayoutChangeListener(listener); layoutChangeListenerMap.remove(child); layoutChangeListenerMap.remove(child); } } @Override @Override public void onAnimationEnd(Animator animator) { public void onAnimationEnd(Animator animator) { if (!canceled) { if (!canceled) { currentChangingAnimations.remove(child); currentChangingAnimations.remove(child); } } if (mListeners != null) { for (TransitionListener listener : mListeners) { listener.endTransition(LayoutTransition.this, parent, child, changeReason == APPEARING ? CHANGE_APPEARING : CHANGE_DISAPPEARING); } } } } }); }); Loading Loading
core/java/android/animation/LayoutTransition.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -600,6 +600,18 @@ public class LayoutTransition { // Remove the animation from the cache when it ends // Remove the animation from the cache when it ends anim.addListener(new AnimatorListenerAdapter() { anim.addListener(new AnimatorListenerAdapter() { private boolean canceled = false; private boolean canceled = false; @Override public void onAnimationStart(Animator animator) { if (mListeners != null) { for (TransitionListener listener : mListeners) { listener.startTransition(LayoutTransition.this, parent, child, changeReason == APPEARING ? CHANGE_APPEARING : CHANGE_DISAPPEARING); } } } @Override @Override public void onAnimationCancel(Animator animator) { public void onAnimationCancel(Animator animator) { // we remove canceled animations immediately, not here // we remove canceled animations immediately, not here Loading @@ -607,11 +619,19 @@ public class LayoutTransition { child.removeOnLayoutChangeListener(listener); child.removeOnLayoutChangeListener(listener); layoutChangeListenerMap.remove(child); layoutChangeListenerMap.remove(child); } } @Override @Override public void onAnimationEnd(Animator animator) { public void onAnimationEnd(Animator animator) { if (!canceled) { if (!canceled) { currentChangingAnimations.remove(child); currentChangingAnimations.remove(child); } } if (mListeners != null) { for (TransitionListener listener : mListeners) { listener.endTransition(LayoutTransition.this, parent, child, changeReason == APPEARING ? CHANGE_APPEARING : CHANGE_DISAPPEARING); } } } } }); }); Loading