Keep scene change code in framework transitions in sync with AndroidX

Bug: 65536124
Test: cts/TransitionManagerTest
Change-Id: I976f07899c7d6ef68acbcc207ddb07ae5ac7f28f
This commit is contained in:
Andrey Kulikov
2018-09-28 01:27:34 +01:00
parent 914857349e
commit 0cf6e6f0a4

View File

@@ -188,8 +188,12 @@ public class TransitionManager {
final ViewGroup sceneRoot = scene.getSceneRoot();
if (!sPendingTransitions.contains(sceneRoot)) {
Scene oldScene = Scene.getCurrentScene(sceneRoot);
if (transition == null) {
exitPreviousScene(sceneRoot);
// Notify old scene that it is being exited
if (oldScene != null) {
oldScene.exit();
}
scene.enter();
} else {
@@ -198,7 +202,6 @@ public class TransitionManager {
Transition transitionClone = transition.clone();
transitionClone.setSceneRoot(sceneRoot);
Scene oldScene = Scene.getCurrentScene(sceneRoot);
if (oldScene != null && oldScene.isCreatedFromLayoutResource()) {
transitionClone.setCanRemoveViews(true);
}
@@ -212,14 +215,6 @@ public class TransitionManager {
}
}
private static void exitPreviousScene(final ViewGroup sceneRoot) {
// Notify previous scene that it is being exited
final Scene previousScene = Scene.getCurrentScene(sceneRoot);
if (previousScene != null) {
previousScene.exit();
}
}
@UnsupportedAppUsage
private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
@@ -349,7 +344,11 @@ public class TransitionManager {
transition.captureValues(sceneRoot, true);
}
exitPreviousScene(sceneRoot);
// Notify previous scene that it is being exited
Scene previousScene = Scene.getCurrentScene(sceneRoot);
if (previousScene != null) {
previousScene.exit();
}
}
/**