From c911c3da724eb5fb9f91be907c01b6bbc308b9d5 Mon Sep 17 00:00:00 2001 From: Vadim Tryshev Date: Wed, 21 Mar 2018 16:40:13 -0700 Subject: [PATCH] Dismissing tasks via keyboard Bug: 73090995 Test: Press all Del buttons on keyboard, backspace, while in or not in Alt-Tab. Change-Id: I22f99c46adbc465373989c58ed831e32fc8e2ba5 --- .../android/quickstep/TaskSystemShortcut.java | 13 +--------- .../android/quickstep/views/RecentsView.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java index 08be0c8f2e..2ebf2525f5 100644 --- a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java +++ b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java @@ -16,8 +16,6 @@ package com.android.quickstep; -import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; - import android.content.ComponentName; import android.content.Intent; import android.graphics.Bitmap; @@ -37,7 +35,6 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.ItemInfo; import com.android.launcher3.R; import com.android.launcher3.ShortcutInfo; -import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.popup.SystemShortcut; import com.android.launcher3.util.InstantAppResolver; import com.android.quickstep.views.RecentsView; @@ -62,7 +59,6 @@ import java.util.function.Consumer; public class TaskSystemShortcut extends SystemShortcut { private static final String TAG = "TaskSystemShortcut"; - private static final int DISMISS_TASK_DURATION = 300; protected T mSystemShortcut; @@ -206,14 +202,7 @@ public class TaskSystemShortcut extends SystemShortcut mRecentsView.removeIgnoreResetTask(mTaskView); // Start animating in the side pages once launcher has been resized - PendingAnimation pendingAnim = mRecentsView.createTaskDismissAnimation(mTaskView, - false, false, DISMISS_TASK_DURATION); - AnimatorPlaybackController controller = AnimatorPlaybackController.wrap( - pendingAnim.anim, DISMISS_TASK_DURATION); - controller.dispatchOnStart(); - controller.setEndAction(() -> pendingAnim.finish(true)); - controller.getAnimationPlayer().setInterpolator(FAST_OUT_SLOW_IN); - controller.start(); + mRecentsView.dismissTask(mTaskView, false, false); } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index db82286079..c7563b700a 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -18,6 +18,7 @@ package com.android.quickstep.views; import static com.android.launcher3.anim.Interpolators.ACCEL; import static com.android.launcher3.anim.Interpolators.ACCEL_2; +import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.anim.Interpolators.LINEAR; import android.animation.AnimatorSet; @@ -42,6 +43,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.PagedView; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.config.FeatureFlags; import com.android.quickstep.PendingAnimation; import com.android.quickstep.QuickScrubController; @@ -65,6 +67,7 @@ public abstract class RecentsView extends PagedView implements OnSharedPreferenceChangeListener { private static final String PREF_FLIP_RECENTS = "pref_flip_recents"; + private static final int DISMISS_TASK_DURATION = 300; private static final Rect sTempStableInsets = new Rect(); @@ -623,6 +626,17 @@ public abstract class RecentsView } } + public void dismissTask(TaskView taskView, boolean animateTaskView, boolean removeTask) { + PendingAnimation pendingAnim = createTaskDismissAnimation(taskView, animateTaskView, + removeTask, DISMISS_TASK_DURATION); + AnimatorPlaybackController controller = AnimatorPlaybackController.wrap( + pendingAnim.anim, DISMISS_TASK_DURATION); + controller.dispatchOnStart(); + controller.setEndAction(() -> pendingAnim.finish(true)); + controller.getAnimationPlayer().setInterpolator(FAST_OUT_SLOW_IN); + controller.start(); + } + @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { @@ -636,6 +650,18 @@ public abstract class RecentsView case KeyEvent.KEYCODE_DPAD_LEFT: snapToPageRelative(mIsRtl ? 1 : -1); return true; + case KeyEvent.KEYCODE_DEL: + case KeyEvent.KEYCODE_FORWARD_DEL: + dismissTask((TaskView) getChildAt(getNextPage()), true /*animateTaskView*/, + true /*removeTask*/); + return true; + case KeyEvent.KEYCODE_NUMPAD_DOT: + if (event.isAltPressed()) { + // Numpad DEL pressed while holding Alt. + dismissTask((TaskView) getChildAt(getNextPage()), true /*animateTaskView*/, + true /*removeTask*/); + return true; + } } } return super.dispatchKeyEvent(event);