summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/transition/TransitionManager.java29
1 files changed, 16 insertions, 13 deletions
diff --git a/core/java/android/transition/TransitionManager.java b/core/java/android/transition/TransitionManager.java
index 80245ef..0b70fdb 100644
--- a/core/java/android/transition/TransitionManager.java
+++ b/core/java/android/transition/TransitionManager.java
@@ -181,24 +181,27 @@ public class TransitionManager {
private static void changeScene(Scene scene, Transition transition) {
final ViewGroup sceneRoot = scene.getSceneRoot();
+ if (!sPendingTransitions.contains(sceneRoot)) {
+ sPendingTransitions.add(sceneRoot);
- Transition transitionClone = null;
- if (transition != null) {
- transitionClone = transition.clone();
- transitionClone.setSceneRoot(sceneRoot);
- }
+ Transition transitionClone = null;
+ if (transition != null) {
+ transitionClone = transition.clone();
+ transitionClone.setSceneRoot(sceneRoot);
+ }
- Scene oldScene = Scene.getCurrentScene(sceneRoot);
- if (oldScene != null && transitionClone != null &&
- oldScene.isCreatedFromLayoutResource()) {
- transitionClone.setCanRemoveViews(true);
- }
+ Scene oldScene = Scene.getCurrentScene(sceneRoot);
+ if (oldScene != null && transitionClone != null &&
+ oldScene.isCreatedFromLayoutResource()) {
+ transitionClone.setCanRemoveViews(true);
+ }
- sceneChangeSetup(sceneRoot, transitionClone);
+ sceneChangeSetup(sceneRoot, transitionClone);
- scene.enter();
+ scene.enter();
- sceneChangeRunTransition(sceneRoot, transitionClone);
+ sceneChangeRunTransition(sceneRoot, transitionClone);
+ }
}
private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {