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

Commit 40ff0849 authored by Jerry Chang's avatar Jerry Chang
Browse files

Integrate split pair cold launch transition with shell transition

Fix: 222163803
Test: enabled shell transition, cold launch a split pair from overview
      has proper transition.
Change-Id: Ia5398d24baa64bc98a04e839f6d1247c7c7aabeb
parent caacd73c
Loading
Loading
Loading
Loading
+32 −2
Original line number Diff line number Diff line
@@ -391,10 +391,39 @@ public final class TaskViewUtils {
     * device is considered in multiWindowMode and things like insets and stuff change
     * and calculations have to be adjusted in the animations for that
     */
    public static void composeRecentsSplitLaunchAnimator(int initialTaskId,
            @Nullable PendingIntent initialTaskPendingIntent, int secondTaskId,
    public static void composeRecentsSplitLaunchAnimator(GroupedTaskView launchingTaskView,
            @NonNull StateManager stateManager, @Nullable DepthController depthController,
            int initialTaskId, @Nullable PendingIntent initialTaskPendingIntent, int secondTaskId,
            @NonNull TransitionInfo transitionInfo, SurfaceControl.Transaction t,
            @NonNull Runnable finishCallback) {
        if (launchingTaskView != null) {
            AnimatorSet animatorSet = new AnimatorSet();
            animatorSet.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    finishCallback.run();
                }
            });

            final RemoteAnimationTargetCompat[] appTargets =
                    RemoteAnimationTargetCompat.wrapApps(transitionInfo, t, null /* leashMap */);
            final RemoteAnimationTargetCompat[] wallpaperTargets =
                    RemoteAnimationTargetCompat.wrapNonApps(
                            transitionInfo, true /* wallpapers */, t, null /* leashMap */);
            final RemoteAnimationTargetCompat[] nonAppTargets =
                    RemoteAnimationTargetCompat.wrapNonApps(
                            transitionInfo, false /* wallpapers */, t, null /* leashMap */);
            final RecentsView recentsView = launchingTaskView.getRecentsView();
            composeRecentsLaunchAnimator(animatorSet, launchingTaskView,
                    appTargets, wallpaperTargets, nonAppTargets,
                    true, stateManager,
                    recentsView, depthController);

            t.apply();
            animatorSet.start();
            return;
        }

        // TODO: consider initialTaskPendingIntent
        TransitionInfo.Change splitRoot1 = null;
        TransitionInfo.Change splitRoot2 = null;
@@ -682,6 +711,7 @@ public final class TaskViewUtils {
            public void onAnimationStart(Animator animation) {
                if (shown) {
                    for (SurfaceControl leash : auxiliarySurfaces) {
                        t.setLayer(leash, Integer.MAX_VALUE);
                        t.setAlpha(leash, 0);
                        t.show(leash);
                    }
+3 −2
Original line number Diff line number Diff line
@@ -242,8 +242,9 @@ public class SplitSelectStateController {
        @Override
        public void startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
                @NonNull SurfaceControl.Transaction t, @NonNull Runnable finishCallback) {
            TaskViewUtils.composeRecentsSplitLaunchAnimator(mInitialTaskId,
                    mInitialTaskPendingIntent, mSecondTaskId, info, t, () -> {
            TaskViewUtils.composeRecentsSplitLaunchAnimator(mLaunchingTaskView, mStateManager,
                    mDepthController, mInitialTaskId, mInitialTaskPendingIntent, mSecondTaskId,
                    info, t, () -> {
                    finishCallback.run();
                    if (mSuccessCallback != null) {
                        mSuccessCallback.accept(true);