diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/app/ActivityTransitionCoordinator.java | 16 | ||||
| -rw-r--r-- | core/java/android/app/EnterTransitionCoordinator.java | 8 |
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); |
