Make shared element visible when exit transition finishes early.
Bug 16124915
Change-Id: I91aa4a4912f3edb298ec75dd4178572a2c941a31
diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java
index fdfbca3..90f36b8 100644
--- a/core/java/android/app/EnterTransitionCoordinator.java
+++ b/core/java/android/app/EnterTransitionCoordinator.java
@@ -58,6 +58,7 @@
private Bundle mSharedElementsBundle;
private boolean mWasOpaque;
private boolean mAreViewsReady;
+ private boolean mIsViewsTransitionStarted;
public EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver,
ArrayList<String> sharedElementNames, boolean isReturning) {
@@ -219,7 +220,7 @@
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 @@
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 51d18f9..0fbd685 100644
--- a/core/java/android/app/ExitTransitionCoordinator.java
+++ b/core/java/android/app/ExitTransitionCoordinator.java
@@ -116,6 +116,7 @@
setViewVisibility(mTransitioningViews, View.VISIBLE);
setViewVisibility(mSharedElements, View.VISIBLE);
mIsHidden = true;
+ clearState();
}
private void sharedElementExitBack() {
@@ -357,7 +358,6 @@
}
if (!mIsReturning && mExitNotified) {
mActivity = null; // don't need it anymore
- clearState();
}
}