diff options
| -rw-r--r-- | core/java/android/app/ActivityTransitionCoordinator.java | 23 | ||||
| -rw-r--r-- | core/java/android/app/EnterTransitionCoordinator.java | 10 | ||||
| -rw-r--r-- | core/java/android/app/ExitTransitionCoordinator.java | 10 |
3 files changed, 31 insertions, 12 deletions
diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index 9e80a4b0ec1b..9f49194ac22b 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -205,6 +205,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { private boolean mIsStartingTransition; private ArrayList<GhostViewListeners> mGhostViewListeners = new ArrayList<GhostViewListeners>(); + private ArrayMap<View, Float> mOriginalAlphas = new ArrayMap<View, Float>(); public ActivityTransitionCoordinator(Window window, ArrayList<String> allSharedElementNames, @@ -580,6 +581,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { mWindow = null; mSharedElements.clear(); mTransitioningViews.clear(); + mOriginalAlphas.clear(); mResultReceiver = null; mPendingTransition = null; mListener = null; @@ -589,10 +591,27 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { return getWindow().getTransitionBackgroundFadeDuration(); } - protected static void setTransitionAlpha(ArrayList<View> views, float alpha) { + protected void hideViews(ArrayList<View> views) { int count = views.size(); for (int i = 0; i < count; i++) { - views.get(i).setTransitionAlpha(alpha); + View view = views.get(i); + if (!mOriginalAlphas.containsKey(view)) { + mOriginalAlphas.put(view, view.getAlpha()); + } + view.setAlpha(0f); + view.setTransitionAlpha(0f); + } + } + + protected void showViews(ArrayList<View> views) { + int count = views.size(); + for (int i = 0; i < count; i++) { + View view = views.get(i); + Float alpha = mOriginalAlphas.remove(view); + if (alpha != null) { + view.setAlpha(alpha); + view.setTransitionAlpha(1f); + } } } diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index f432c4954f28..f38c10881e74 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -112,9 +112,9 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { protected void viewsReady(ArrayMap<String, View> sharedElements) { super.viewsReady(sharedElements); mIsReadyForTransition = true; - setTransitionAlpha(mSharedElements, 0); + hideViews(mSharedElements); if (getViewsTransition() != null) { - setTransitionAlpha(mTransitioningViews, 0); + hideViews(mTransitioningViews); } if (mIsReturning) { sendSharedElementDestination(); @@ -240,7 +240,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { if (!mIsCanceled) { mIsCanceled = true; if (getViewsTransition() == null || mIsViewsTransitionStarted) { - setTransitionAlpha(mSharedElements, 1); + showViews(mSharedElements); } else { mTransitioningViews.addAll(mSharedElements); } @@ -300,7 +300,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { // Now start shared element transition ArrayList<View> sharedElementSnapshots = createSnapshots(sharedElementState, mSharedElementNames); - setTransitionAlpha(mSharedElements, 1); + showViews(mSharedElements); scheduleSetSharedElementEnd(sharedElementSnapshots); ArrayList<SharedElementOriginalState> originalImageViewState = setSharedElementState(sharedElementState, sharedElementSnapshots); @@ -411,7 +411,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { @Override public void onTransitionStart(Transition transition) { mEnterViewsTransition = transition; - setTransitionAlpha(mTransitioningViews, 1); + showViews(mTransitioningViews); super.onTransitionStart(transition); } diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java index a59a9272e495..982bbc407aea 100644 --- a/core/java/android/app/ExitTransitionCoordinator.java +++ b/core/java/android/app/ExitTransitionCoordinator.java @@ -126,8 +126,8 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } public void resetViews() { - setTransitionAlpha(mTransitioningViews, 1); - setTransitionAlpha(mSharedElements, 1); + showViews(mTransitioningViews); + showViews(mSharedElements); mIsHidden = true; if (!mIsReturning && getDecor() != null) { getDecor().suppressLayout(false); @@ -187,7 +187,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private void hideSharedElements() { moveSharedElementsFromOverlay(); if (!mIsHidden) { - setTransitionAlpha(mSharedElements, 0); + hideViews(mSharedElements); } mSharedElementsHidden = true; finishIfNecessary(); @@ -296,7 +296,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { transition.removeListener(this); exitTransitionComplete(); if (mIsHidden) { - setTransitionAlpha(mTransitioningViews, 1); + showViews(mTransitioningViews); } if (mSharedElementBundle != null) { delayCancel(); @@ -323,7 +323,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { transition.removeListener(this); sharedElementTransitionComplete(); if (mIsHidden) { - setTransitionAlpha(mSharedElements, 1); + showViews(mSharedElements); } } }); |