diff --git a/core/java/android/animation/LayoutTransition.java b/core/java/android/animation/LayoutTransition.java index 8931450b3fa2a..d534163725b93 100644 --- a/core/java/android/animation/LayoutTransition.java +++ b/core/java/android/animation/LayoutTransition.java @@ -600,6 +600,18 @@ public class LayoutTransition { // Remove the animation from the cache when it ends anim.addListener(new AnimatorListenerAdapter() { 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 public void onAnimationCancel(Animator animator) { // we remove canceled animations immediately, not here @@ -607,11 +619,19 @@ public class LayoutTransition { child.removeOnLayoutChangeListener(listener); layoutChangeListenerMap.remove(child); } + @Override public void onAnimationEnd(Animator animator) { if (!canceled) { currentChangingAnimations.remove(child); } + if (mListeners != null) { + for (TransitionListener listener : mListeners) { + listener.endTransition(LayoutTransition.this, parent, child, + changeReason == APPEARING ? + CHANGE_APPEARING : CHANGE_DISAPPEARING); + } + } } });