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

Commit 2f00033f authored by George Mount's avatar George Mount Committed by Android (Google) Code Review
Browse files

Merge "Target only the proper views in activity transitions."

parents 40868e19 8881502d
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -288,16 +288,22 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
        }
    }

    protected static Transition addTargets(Transition transition, Collection<View> views) {
        if (transition == null || views == null || views.isEmpty()) {
    protected Transition setTargets(Transition transition, boolean add) {
        if (transition == null || (add &&
                (mTransitioningViews == null || mTransitioningViews.isEmpty()))) {
            return null;
        }
        // Add the targets to a set containing transition so that transition
        // remains unaffected. We don't want to modify the targets of transition itself.
        TransitionSet set = new TransitionSet();
        if (views != null) {
            for (View view : views) {
        if (mTransitioningViews != null) {
            for (int i = mTransitioningViews.size() - 1; i >= 0; i--) {
                View view = mTransitioningViews.get(i);
                if (add) {
                    set.addTarget(view);
                } else {
                    set.excludeTarget(view, true);
                }
            }
        }
        // By adding the transition after addTarget, we prevent addTarget from
@@ -306,10 +312,12 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
        return set;
    }

    protected Transition configureTransition(Transition transition) {
    protected Transition configureTransition(Transition transition,
            boolean includeTransitioningViews) {
        if (transition != null) {
            transition = transition.clone();
            transition.setEpicenterCallback(mEpicenterCallback);
            transition = setTargets(transition, includeTransitioningViews);
        }
        return transition;
    }
+2 −5
Original line number Diff line number Diff line
@@ -254,7 +254,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
    }

    private void startSharedElementTransition(Bundle sharedElementState) {
        setEpicenter();
        // Remove rejected shared elements
        ArrayList<String> rejectedNames = new ArrayList<String>(mAllSharedElementNames);
        rejectedNames.removeAll(mSharedElementNames);
@@ -327,14 +326,13 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
            boolean startSharedElementTransition) {
        Transition sharedElementTransition = null;
        if (startSharedElementTransition && !mSharedElementNames.isEmpty()) {
            sharedElementTransition = configureTransition(getSharedElementTransition());
            sharedElementTransition = configureTransition(getSharedElementTransition(), false);
        }
        Transition viewsTransition = null;
        if (startEnterTransition && !mTransitioningViews.isEmpty()) {
            viewsTransition = configureTransition(getViewsTransition());
            viewsTransition = configureTransition(getViewsTransition(), true);
            if (viewsTransition != null) {
                stripOffscreenViews();
                viewsTransition = addTargets(viewsTransition, mTransitioningViews);
            }
        }

@@ -465,7 +463,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
        startTransition(new Runnable() {
            @Override
            public void run() {
                setEpicenter();
                boolean startEnterTransition = true;
                boolean startSharedElementTransition = false;
                Transition transition = beginTransition(startEnterTransition,
+2 −2
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
    private Transition getExitTransition() {
        Transition viewsTransition = null;
        if (!mTransitioningViews.isEmpty()) {
            viewsTransition = configureTransition(getViewsTransition());
            viewsTransition = configureTransition(getViewsTransition(), true);
        }
        if (viewsTransition == null) {
            exitTransitionComplete();
@@ -283,7 +283,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
    private Transition getSharedElementExitTransition() {
        Transition sharedElementTransition = null;
        if (!mSharedElements.isEmpty()) {
            sharedElementTransition = configureTransition(getSharedElementTransition());
            sharedElementTransition = configureTransition(getSharedElementTransition(), false);
        }
        if (sharedElementTransition == null) {
            sharedElementTransitionComplete();