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

Commit 30800b97 authored by Yuichiro Hanada's avatar Yuichiro Hanada Committed by Android (Google) Code Review
Browse files

Merge "Implement animation for TRANSIT_MINIMIZE" into main

parents 3f492ab2 ec965a8a
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.app.WindowConfiguration;
import android.graphics.Rect;
import android.os.IBinder;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.window.TransitionInfo;
@@ -38,6 +39,7 @@ import androidx.annotation.Nullable;

import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.shared.animation.MinimizeAnimator;
import com.android.wm.shell.transition.Transitions;

import java.util.ArrayList;
@@ -137,7 +139,7 @@ public class FreeformTaskTransitionHandler
                    break;
                case WindowManager.TRANSIT_TO_BACK:
                    transitionHandled |= startMinimizeTransition(
                            transition, info.getType(), change);
                            transition, info.getType(), change, finishT, animations, onAnimFinish);
                    break;
                case WindowManager.TRANSIT_CLOSE:
                    if (change.getTaskInfo().getWindowingMode() == WINDOWING_MODE_FREEFORM) {
@@ -206,7 +208,10 @@ public class FreeformTaskTransitionHandler
    private boolean startMinimizeTransition(
            IBinder transition,
            int type,
            TransitionInfo.Change change) {
            TransitionInfo.Change change,
            SurfaceControl.Transaction finishT,
            ArrayList<Animator> animations,
            Runnable onAnimFinish) {
        if (!mPendingTransitionTokens.contains(transition)) {
            return false;
        }
@@ -215,7 +220,23 @@ public class FreeformTaskTransitionHandler
        if (type != Transitions.TRANSIT_MINIMIZE) {
            return false;
        }
        // TODO(b/361524575): Add minimize animations

        SurfaceControl.Transaction t = new SurfaceControl.Transaction();
        SurfaceControl sc = change.getLeash();
        finishT.hide(sc);
        final DisplayMetrics displayMetrics =
                mDisplayController
                        .getDisplayContext(taskInfo.displayId).getResources().getDisplayMetrics();
        final Animator animator = MinimizeAnimator.create(
                displayMetrics,
                change,
                t,
                (anim) -> {
                    animations.remove(anim);
                    onAnimFinish.run();
                    return null;
                });
        animations.add(animator);
        return true;
    }