Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aae763e6 authored by George Mount's avatar George Mount
Browse files

Fix bug in which some Views were not executing enter transition.

Bug 31236341

Strips the views from the enter transition as soon as they
are ready to prevent stripping from happening after
the shared element starts -- possibly changing the views
to strip. The stripped views are now excluded explicitly
from transitions when they are configured.

Test: Ia8c4e876d9978af17f1a34b0d35cf33e00389ab3

Change-Id: Id8f6132db173a9011f6346de70cfe770ddee1244
parent 6b6fc563
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
    private ArrayList<Matrix> mSharedElementParentMatrices;
    private boolean mSharedElementTransitionComplete;
    private boolean mViewsTransitionComplete;
    private ArrayList<View> mStrippedTransitioningViews = new ArrayList<>();

    public ActivityTransitionCoordinator(Window window,
            ArrayList<String> allSharedElementNames,
@@ -287,7 +288,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
            View view = mTransitioningViews.get(i);
            if (!view.getGlobalVisibleRect(r)) {
                mTransitioningViews.remove(i);
                showView(view, true);
                mStrippedTransitioningViews.add(view);
            }
        }
    }
@@ -360,6 +361,12 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
                }
            }
        }
        if (mStrippedTransitioningViews != null) {
            for (int i = mStrippedTransitioningViews.size() - 1; i >= 0; i--) {
                View view = mStrippedTransitioningViews.get(i);
                set.excludeTarget(view, true);
            }
        }
        // By adding the transition after addTarget, we prevent addTarget from
        // affecting transition.
        set.addTransition(transition);
@@ -679,6 +686,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
        mWindow = null;
        mSharedElements.clear();
        mTransitioningViews = null;
        mStrippedTransitioningViews = null;
        mOriginalAlphas.clear();
        mResultReceiver = null;
        mPendingTransition = null;
+1 −3
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
        mIsReadyForTransition = true;
        hideViews(mSharedElements);
        if (getViewsTransition() != null && mTransitioningViews != null) {
            stripOffscreenViews();
            hideViews(mTransitioningViews);
        }
        if (mIsReturning) {
@@ -518,9 +519,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
            mIsViewsTransitionStarted = true;
            if (mTransitioningViews != null && !mTransitioningViews.isEmpty()) {
                viewsTransition = configureTransition(getViewsTransition(), true);
                if (viewsTransition != null && !mIsReturning) {
                    stripOffscreenViews();
                }
            }
            if (viewsTransition == null) {
                viewsTransitionComplete();