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

Commit 46c4d8dc authored by Dake Gu's avatar Dake Gu Committed by Android (Google) Code Review
Browse files

Merge "Transition: remap if views in calling activity became invalid" into lmp-dev

parents 0df0e19f b04b36ea
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -193,7 +193,8 @@ class ActivityTransitionState {
    private void startEnter() {
        if (mEnterActivityOptions.isReturning()) {
            if (mExitingToView != null) {
                mEnterTransitionCoordinator.viewInstancesReady(mExitingFrom, mExitingToView);
                mEnterTransitionCoordinator.viewInstancesReady(mExitingFrom, mExitingTo,
                        mExitingToView);
            } else {
                mEnterTransitionCoordinator.namedViewsReady(mExitingFrom, mExitingTo);
            }
@@ -248,8 +249,6 @@ class ActivityTransitionState {
                    mEnterTransitionCoordinator.cancelEnter();
                    mEnterTransitionCoordinator = null;
                }
                ArrayMap<String, View> sharedElements = new ArrayMap<String, View>();
                activity.getWindow().getDecorView().findNamedViews(sharedElements);

                ExitTransitionCoordinator exitCoordinator =
                        new ExitTransitionCoordinator(activity, mEnteringNames, null, null, true);
+17 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.ResultReceiver;
import android.text.TextUtils;
import android.transition.Transition;
import android.transition.TransitionManager;
import android.util.ArrayMap;
@@ -82,9 +83,23 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
                });
    }

    public void viewInstancesReady(ArrayList<String> accepted, ArrayList<View> localViews) {
    public void viewInstancesReady(ArrayList<String> accepted, ArrayList<String> localNames,
            ArrayList<View> localViews) {
        boolean remap = false;
        for (int i = 0; i < localViews.size(); i++) {
            View view = localViews.get(i);
            if (!TextUtils.equals(view.getTransitionName(), localNames.get(i))
                    || !view.isAttachedToWindow()) {
                remap = true;
                break;
            }
        }
        if (remap) {
            triggerViewsReady(mapNamedElements(accepted, localNames));
        } else {
            triggerViewsReady(mapSharedElements(accepted, localViews));
        }
    }

    public void namedViewsReady(ArrayList<String> accepted, ArrayList<String> localNames) {
        triggerViewsReady(mapNamedElements(accepted, localNames));