diff options
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java index 58337ece0991..e848b889b314 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java @@ -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; } |