Merge "Only use return transition when requested." into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-09-10 00:00:16 +00:00
committed by Android (Google) Code Review

View File

@@ -145,7 +145,10 @@ class ActivityTransitionState {
* that it is preserved through activty destroy and restore. * that it is preserved through activty destroy and restore.
*/ */
private ArrayList<String> getPendingExitNames() { private ArrayList<String> getPendingExitNames() {
if (mPendingExitNames == null && mEnterTransitionCoordinator != null) { if (mPendingExitNames == null
&& mEnterTransitionCoordinator != null
&& !mEnterTransitionCoordinator.isReturning()
) {
mPendingExitNames = mEnterTransitionCoordinator.getPendingExitSharedElementNames(); mPendingExitNames = mEnterTransitionCoordinator.getPendingExitSharedElementNames();
} }
return mPendingExitNames; return mPendingExitNames;
@@ -202,6 +205,7 @@ class ActivityTransitionState {
restoreExitedViews(); restoreExitedViews();
activity.getWindow().getDecorView().setVisibility(View.VISIBLE); activity.getWindow().getDecorView().setVisibility(View.VISIBLE);
} }
getPendingExitNames(); // Set mPendingExitNames before resetting mEnterTransitionCoordinator
mEnterTransitionCoordinator = new EnterTransitionCoordinator(activity, mEnterTransitionCoordinator = new EnterTransitionCoordinator(activity,
resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning(), resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning(),
mEnterActivityOptions.isCrossTask()); mEnterActivityOptions.isCrossTask());
@@ -250,6 +254,7 @@ class ActivityTransitionState {
public void onStop(Activity activity) { public void onStop(Activity activity) {
restoreExitedViews(); restoreExitedViews();
if (mEnterTransitionCoordinator != null) { if (mEnterTransitionCoordinator != null) {
getPendingExitNames(); // Set mPendingExitNames before clearing
mEnterTransitionCoordinator.stop(); mEnterTransitionCoordinator.stop();
mEnterTransitionCoordinator = null; mEnterTransitionCoordinator = null;
} }
@@ -275,6 +280,7 @@ class ActivityTransitionState {
restoreReenteringViews(); restoreReenteringViews();
} else if (mEnterTransitionCoordinator.isReturning()) { } else if (mEnterTransitionCoordinator.isReturning()) {
mEnterTransitionCoordinator.runAfterTransitionsComplete(() -> { mEnterTransitionCoordinator.runAfterTransitionsComplete(() -> {
getPendingExitNames(); // Set mPendingExitNames before clearing
mEnterTransitionCoordinator = null; mEnterTransitionCoordinator = null;
}); });
} }
@@ -374,6 +380,7 @@ class ActivityTransitionState {
} }
public void startExitOutTransition(Activity activity, Bundle options) { public void startExitOutTransition(Activity activity, Bundle options) {
getPendingExitNames(); // Set mPendingExitNames before clearing mEnterTransitionCoordinator
mEnterTransitionCoordinator = null; mEnterTransitionCoordinator = null;
if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS) || if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS) ||
mExitTransitionCoordinators == null) { mExitTransitionCoordinators == null) {