From 2954cd91ab1fef14c8aed5173c160ce00558cd3a Mon Sep 17 00:00:00 2001 From: Chet Haase Date: Sun, 9 Jan 2011 09:43:39 -0800 Subject: [PATCH] Add start/endTransition events for CHANGE transitions There was already a mechanism for sending out events for LayoutTransition when animations started or ended, but the implementation only sent out events for the appearing/disappearing animations. This fix provides callbacks to listeners for the CHANGE_APPEARING and CHANGE_DISAPPEARING transitions, too. Change-Id: Icfb8cc1c20d2df3e4a817255e96c9d0e94c1d8c4 --- core/java/android/animation/LayoutTransition.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/java/android/animation/LayoutTransition.java b/core/java/android/animation/LayoutTransition.java index 8931450b3fa2..d534163725b9 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); + } + } } }); -- 2.11.0