Loading core/java/android/app/EnterTransitionCoordinator.java +15 −2 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { private static final String TAG = "EnterTransitionCoordinator"; private static final long MAX_WAIT_MS = 1000; private static final int MIN_ANIMATION_FRAMES = 2; private boolean mSharedElementTransitionStarted; private Activity mActivity; Loading Loading @@ -280,10 +281,22 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { setOriginalImageViewState(originalImageViewState); if (mResultReceiver != null) { // We can't trust that the view will disappear on the same frame that the shared // element appears here. Assure that we get at least 2 frames for double-buffering. getDecor().postOnAnimation(new Runnable() { int mAnimations; @Override public void run() { if (mAnimations++ < MIN_ANIMATION_FRAMES) { getDecor().postOnAnimation(this); } else { mResultReceiver.send(MSG_HIDE_SHARED_ELEMENTS, null); } mResultReceiver = null; // all done sending messages. } } }); } } @Override protected void stripOffscreenViews() { Loading core/java/android/app/ExitTransitionCoordinator.java +7 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.transition.Transition; import android.transition.TransitionManager; import android.util.ArrayMap; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroupOverlay; import android.view.ViewTreeObserver; Loading Loading @@ -65,8 +66,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private Bundle mExitSharedElementBundle; private ArrayList<View> mSharedElementSnapshots; public ExitTransitionCoordinator(Activity activity, ArrayList<String> names, ArrayList<String> accepted, ArrayList<View> mapped, boolean isReturning) { super(activity.getWindow(), names, getListener(activity, isReturning), Loading Loading @@ -131,17 +130,14 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { Transition transition = getSharedElementExitTransition(); final ArrayList<View> sharedElementSnapshots = createSnapshots(mExitSharedElementBundle, mSharedElementNames); mSharedElementSnapshots = createSnapshots(mExitSharedElementBundle, mSharedElementNames); transition.addListener(new Transition.TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); setViewVisibility(mSharedElements, View.INVISIBLE); ViewGroupOverlay overlay = getDecor().getOverlay(); if (mSharedElementSnapshots != null) { for (int i = 0; i < mSharedElementSnapshots.size(); i++) { overlay.add(mSharedElementSnapshots.get(i)); } int count = mSharedElements.size(); for (int i = 0; i < count; i++) { View sharedElement = mSharedElements.get(i); ((ViewGroup)sharedElement.getParent()).suppressLayout(true); } } }); Loading @@ -158,28 +154,10 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { getDecor().invalidate(); } private static ArrayList<View> copySnapshots(ArrayList<View> snapshots) { ArrayList<View> copy = new ArrayList<View>(snapshots.size()); for (int i = 0; i < snapshots.size(); i++) { View view = snapshots.get(i); View viewCopy = new View(view.getContext()); viewCopy.setBackground(view.getBackground()); copy.add(viewCopy); } return copy; } private void hideSharedElements() { if (!mIsHidden) { setViewVisibility(mSharedElements, View.INVISIBLE); } if (mSharedElementSnapshots != null) { ViewGroupOverlay overlay = getDecor().getOverlay(); for (int i = 0; i < mSharedElementSnapshots.size(); i++) { overlay.remove(mSharedElementSnapshots.get(i)); } mSharedElementSnapshots = null; } finishIfNecessary(); } Loading Loading @@ -360,7 +338,8 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } private void finishIfNecessary() { if (mIsReturning && mExitNotified && mActivity != null && mSharedElementSnapshots == null) { if (mIsReturning && mExitNotified && mActivity != null && (mSharedElements.isEmpty() || mSharedElements.get(0).getVisibility() == View.INVISIBLE)) { finish(); } if (!mIsReturning && mExitNotified) { Loading @@ -382,7 +361,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { mBackgroundAnimator = null; } mExitSharedElementBundle = null; mSharedElementSnapshots = null; clearState(); } Loading Loading
core/java/android/app/EnterTransitionCoordinator.java +15 −2 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { private static final String TAG = "EnterTransitionCoordinator"; private static final long MAX_WAIT_MS = 1000; private static final int MIN_ANIMATION_FRAMES = 2; private boolean mSharedElementTransitionStarted; private Activity mActivity; Loading Loading @@ -280,10 +281,22 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { setOriginalImageViewState(originalImageViewState); if (mResultReceiver != null) { // We can't trust that the view will disappear on the same frame that the shared // element appears here. Assure that we get at least 2 frames for double-buffering. getDecor().postOnAnimation(new Runnable() { int mAnimations; @Override public void run() { if (mAnimations++ < MIN_ANIMATION_FRAMES) { getDecor().postOnAnimation(this); } else { mResultReceiver.send(MSG_HIDE_SHARED_ELEMENTS, null); } mResultReceiver = null; // all done sending messages. } } }); } } @Override protected void stripOffscreenViews() { Loading
core/java/android/app/ExitTransitionCoordinator.java +7 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.transition.Transition; import android.transition.TransitionManager; import android.util.ArrayMap; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroupOverlay; import android.view.ViewTreeObserver; Loading Loading @@ -65,8 +66,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private Bundle mExitSharedElementBundle; private ArrayList<View> mSharedElementSnapshots; public ExitTransitionCoordinator(Activity activity, ArrayList<String> names, ArrayList<String> accepted, ArrayList<View> mapped, boolean isReturning) { super(activity.getWindow(), names, getListener(activity, isReturning), Loading Loading @@ -131,17 +130,14 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { Transition transition = getSharedElementExitTransition(); final ArrayList<View> sharedElementSnapshots = createSnapshots(mExitSharedElementBundle, mSharedElementNames); mSharedElementSnapshots = createSnapshots(mExitSharedElementBundle, mSharedElementNames); transition.addListener(new Transition.TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); setViewVisibility(mSharedElements, View.INVISIBLE); ViewGroupOverlay overlay = getDecor().getOverlay(); if (mSharedElementSnapshots != null) { for (int i = 0; i < mSharedElementSnapshots.size(); i++) { overlay.add(mSharedElementSnapshots.get(i)); } int count = mSharedElements.size(); for (int i = 0; i < count; i++) { View sharedElement = mSharedElements.get(i); ((ViewGroup)sharedElement.getParent()).suppressLayout(true); } } }); Loading @@ -158,28 +154,10 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { getDecor().invalidate(); } private static ArrayList<View> copySnapshots(ArrayList<View> snapshots) { ArrayList<View> copy = new ArrayList<View>(snapshots.size()); for (int i = 0; i < snapshots.size(); i++) { View view = snapshots.get(i); View viewCopy = new View(view.getContext()); viewCopy.setBackground(view.getBackground()); copy.add(viewCopy); } return copy; } private void hideSharedElements() { if (!mIsHidden) { setViewVisibility(mSharedElements, View.INVISIBLE); } if (mSharedElementSnapshots != null) { ViewGroupOverlay overlay = getDecor().getOverlay(); for (int i = 0; i < mSharedElementSnapshots.size(); i++) { overlay.remove(mSharedElementSnapshots.get(i)); } mSharedElementSnapshots = null; } finishIfNecessary(); } Loading Loading @@ -360,7 +338,8 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } private void finishIfNecessary() { if (mIsReturning && mExitNotified && mActivity != null && mSharedElementSnapshots == null) { if (mIsReturning && mExitNotified && mActivity != null && (mSharedElements.isEmpty() || mSharedElements.get(0).getVisibility() == View.INVISIBLE)) { finish(); } if (!mIsReturning && mExitNotified) { Loading @@ -382,7 +361,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { mBackgroundAnimator = null; } mExitSharedElementBundle = null; mSharedElementSnapshots = null; clearState(); } Loading