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

Commit 695e8df5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add basic home to recents anim for fallback recents" into ub-launcher3-qt-dev

parents 76696be2 d0863ae5
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.quickstep;

import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.quickstep.views.IconRecentsView.REMOTE_APP_TO_OVERVIEW_DURATION;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;

@@ -134,7 +135,11 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> imple
            return anim;
        }

        if (closingAppTarget.activityType == ACTIVITY_TYPE_HOME) {
            mRecentsView.playRemoteHomeToRecentsAnimation(anim, closingAppTarget, recentsTarget);
        } else {
            mRecentsView.playRemoteAppToRecentsAnimation(anim, closingAppTarget, recentsTarget);
        }

        return anim;
    }
+47 −0
Original line number Diff line number Diff line
@@ -641,6 +641,53 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
        mStartedEnterAnimation = true;
    }

    /**
     * Play remote app to recents animation when the app is the home activity. We use a simple
     * cross-fade here. Note this is only used if the home activity is a separate app than the
     * recents activity.
     *
     * @param anim animator set
     * @param homeTarget the home surface thats closing
     * @param recentsTarget the surface containing recents
     */
    public void playRemoteHomeToRecentsAnimation(@NonNull AnimatorSet anim,
            @NonNull RemoteAnimationTargetCompat homeTarget,
            @NonNull RemoteAnimationTargetCompat recentsTarget) {
        SyncRtSurfaceTransactionApplierCompat surfaceApplier =
                new SyncRtSurfaceTransactionApplierCompat(this);

        SurfaceParams[] params = new SurfaceParams[2];
        int boostedMode = MODE_CLOSING;

        ValueAnimator remoteHomeAnim = ValueAnimator.ofFloat(0, 1);
        remoteHomeAnim.setDuration(REMOTE_APP_TO_OVERVIEW_DURATION);

        remoteHomeAnim.addUpdateListener(valueAnimator -> {
            float val = (float) valueAnimator.getAnimatedValue();
            float alpha;
            RemoteAnimationTargetCompat visibleTarget;
            RemoteAnimationTargetCompat invisibleTarget;
            if (val < .5f) {
                visibleTarget = homeTarget;
                invisibleTarget = recentsTarget;
                alpha = 1 - (val * 2);
            } else {
                visibleTarget = recentsTarget;
                invisibleTarget = homeTarget;
                alpha = (val - .5f) * 2;
            }
            params[0] = new SurfaceParams(visibleTarget.leash, alpha, null /* matrix */,
                    null /* windowCrop */, getLayer(visibleTarget, boostedMode),
                    0 /* cornerRadius */);
            params[1] = new SurfaceParams(invisibleTarget.leash, 0.0f, null /* matrix */,
                    null /* windowCrop */, getLayer(invisibleTarget, boostedMode),
                    0 /* cornerRadius */);
            surfaceApplier.scheduleApply(params);
        });
        anim.play(remoteHomeAnim);
        animateFadeInLayoutAnimation();
    }

    /**
     * Play remote animation from app to recents. This should scale the currently closing app down
     * to the recents thumbnail.