summaryrefslogtreecommitdiff
path: root/quickstep
diff options
context:
space:
mode:
author Johannes Gallmann <gallmann@google.com> 2025-03-26 16:41:10 +0100
committer Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-04-02 19:36:59 -0700
commitc88baf38bfdf0983a88b6dd4e4dc44b4eaaf58ef (patch)
tree856091299c9395e101a0fdcb2a4434b3368f68ad /quickstep
parent327b059225338e22eb71055d3522f2bb05d3ab54 (diff)
Play haptic on ACTION_DOWN for 3-button-nav buttons
Bug: 393959400 Test: Manual, i.e. verified that haptic happens on ACTION_DOWN and on long press (except for back button which doesn't have a haptic on long press). Also verified that Talkback works. Flag: EXEMPT bugfix (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:528bf70f61a6c161ec231d7447ac69dd4d97d1c8) Merged-In: Ieb1892d69268d0bfba0ead9ec38c8ee9843addef Change-Id: Ieb1892d69268d0bfba0ead9ec38c8ee9843addef
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java10
-rw-r--r--quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java2
2 files changed, 9 insertions, 3 deletions
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index cf3b95274a..94746fd8a0 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -58,6 +58,7 @@ import android.animation.ObjectAnimator;
import android.annotation.DrawableRes;
import android.annotation.IdRes;
import android.annotation.LayoutRes;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.ActivityInfo.Config;
import android.content.res.ColorStateList;
@@ -880,6 +881,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
R.layout.taskbar_nav_button);
}
+ @SuppressLint("ClickableViewAccessibility")
private ImageView addButton(@DrawableRes int drawableId, @TaskbarButton int buttonType,
ViewGroup parent, TaskbarNavButtonController navButtonController, @IdRes int id,
@LayoutRes int layoutId) {
@@ -899,6 +901,12 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
navButtonController.onButtonClick(buttonType, view));
buttonView.setOnLongClickListener(view ->
navButtonController.onButtonLongClick(buttonType, view));
+ buttonView.setOnTouchListener((v, event) -> {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ buttonView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+ }
+ return false;
+ });
}
return buttonView;
}
@@ -939,6 +947,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
hasSentDownEvent.set(false);
mHandler.postDelayed(longPressTimeout, PREDICTIVE_BACK_TIMEOUT_MS);
rect.set(0, 0, v.getWidth(), v.getHeight());
+ buttonView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
boolean isCancelled = motionEventAction == MotionEvent.ACTION_CANCEL
|| (!rect.contains(event.getX(), event.getY())
@@ -960,7 +969,6 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
navButtonController.sendBackKeyEvent(KeyEvent.ACTION_UP, isCancelled);
if (motionEventAction == MotionEvent.ACTION_UP && !isCancelled) {
buttonView.performClick();
- buttonView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
return false;
});
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
index 1adb2e909e..f52de63859 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
@@ -147,8 +147,6 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
// prevent interactions with other buttons while back button is pressed
return;
}
- // Provide the same haptic feedback that the system offers for virtual keys.
- view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
switch (buttonType) {
case BUTTON_BACK:
executeBack(/* keyEvent */ null);