diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/transition/TransitionManager.java | 29 |
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() { |