summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/app/ActivityTransitionCoordinator.java16
-rw-r--r--core/java/android/app/EnterTransitionCoordinator.java8
2 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java
index f96c3e3..3c1455b 100644
--- a/core/java/android/app/ActivityTransitionCoordinator.java
+++ b/core/java/android/app/ActivityTransitionCoordinator.java
@@ -206,6 +206,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
private ResultReceiver mRemoteResultReceiver;
private boolean mNotifiedSharedElementTransitionComplete;
private boolean mNotifiedExitTransitionComplete;
+ private boolean mSharedElementTransitionStarted;
private FixedEpicenterCallback mEpicenterCallback = new FixedEpicenterCallback();
@@ -250,7 +251,11 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
onPrepareRestore();
break;
case MSG_EXIT_TRANSITION_COMPLETE:
- onRemoteSceneExitComplete();
+ if (!mSharedElementTransitionStarted) {
+ send(resultCode, resultData);
+ } else {
+ onRemoteSceneExitComplete();
+ }
break;
case MSG_TAKE_SHARED_ELEMENTS:
ArrayList<String> sharedElementNames
@@ -456,9 +461,13 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
mTargetSharedNames.clear();
if (sharedElements == null) {
ArrayMap<String, View> map = new ArrayMap<String, View>();
- setViewVisibility(mEnteringViews, View.VISIBLE);
+ if (getViewsTransition() != null) {
+ setViewVisibility(mEnteringViews, View.VISIBLE);
+ }
getDecor().findSharedElements(map);
- setViewVisibility(mEnteringViews, View.INVISIBLE);
+ if (getViewsTransition() != null) {
+ setViewVisibility(mEnteringViews, View.INVISIBLE);
+ }
for (int i = 0; i < map.size(); i++) {
View view = map.valueAt(i);
String name = map.keyAt(i);
@@ -582,6 +591,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
getDecor().getViewTreeObserver().removeOnPreDrawListener(this);
mListener.onCaptureSharedElementEnd(mTargetSharedNames, mSharedElements,
acceptedOverlayViews);
+ mSharedElementTransitionStarted = true;
return true;
}
}
diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java
index 0798529..c26e68a 100644
--- a/core/java/android/app/EnterTransitionCoordinator.java
+++ b/core/java/android/app/EnterTransitionCoordinator.java
@@ -135,11 +135,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
}
@Override
- protected void onRemoteSceneExitComplete() {
- super.onRemoteSceneExitComplete();
- }
-
- @Override
protected void onTakeSharedElements(ArrayList<String> sharedElementNames, Bundle state) {
mEnteringSharedElementNames = new ArrayList<String>();
mEnteringSharedElementNames.addAll(sharedElementNames);
@@ -149,6 +144,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
@Override
protected void sharedElementTransitionComplete(Bundle bundle) {
notifySharedElementTransitionComplete(bundle);
+ exitAfterSharedElementTransition();
}
@Override
@@ -280,7 +276,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
}
private void exitAfterSharedElementTransition() {
- if (mSharedElementTransitionComplete && mExitTransitionComplete) {
+ if (mSharedElementTransitionComplete && mExitTransitionComplete && mBackgroundFadedOut) {
mActivity.finish();
if (mSupportsTransition) {
mActivity.overridePendingTransition(0, 0);