From 8d3cd2c8cf8ec355265941a8457ffd8e2e348648 Mon Sep 17 00:00:00 2001 From: George Mount Date: Tue, 8 Jul 2014 11:07:33 -0700 Subject: [PATCH] Make shared element visible when exit transition finishes early. Bug 16124915 Change-Id: I91aa4a4912f3edb298ec75dd4178572a2c941a31 --- core/java/android/app/EnterTransitionCoordinator.java | 4 +++- core/java/android/app/ExitTransitionCoordinator.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index fdfbca3470230..90f36b8bc0882 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -58,6 +58,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { private Bundle mSharedElementsBundle; private boolean mWasOpaque; private boolean mAreViewsReady; + private boolean mIsViewsTransitionStarted; public EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver, ArrayList sharedElementNames, boolean isReturning) { @@ -219,7 +220,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { private void cancel() { if (!mIsCanceled) { mIsCanceled = true; - if (getViewsTransition() == null) { + if (getViewsTransition() == null || mIsViewsTransitionStarted) { setViewVisibility(mSharedElements, View.VISIBLE); } else { mTransitioningViews.addAll(mSharedElements); @@ -363,6 +364,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { stripOffscreenViews(); } } + mIsViewsTransitionStarted = mIsViewsTransitionStarted || startEnterTransition; Transition transition = mergeTransitions(sharedElementTransition, viewsTransition); if (startSharedElementTransition) { diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java index 51d18f96aeabe..0fbd68543ac42 100644 --- a/core/java/android/app/ExitTransitionCoordinator.java +++ b/core/java/android/app/ExitTransitionCoordinator.java @@ -116,6 +116,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { setViewVisibility(mTransitioningViews, View.VISIBLE); setViewVisibility(mSharedElements, View.VISIBLE); mIsHidden = true; + clearState(); } private void sharedElementExitBack() { @@ -357,7 +358,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } if (!mIsReturning && mExitNotified) { mActivity = null; // don't need it anymore - clearState(); } }