Merge "Make long click haptic feedback customizable."

This commit is contained in:
Ahmad Khalil
2023-01-27 14:04:11 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 1 deletions

View File

@@ -52358,6 +52358,7 @@ package android.view {
public static interface View.OnLongClickListener {
method public boolean onLongClick(android.view.View);
method public default boolean onLongClickUseDefaultHapticFeedback(@NonNull android.view.View);
}
public static interface View.OnScrollChangeListener {

View File

@@ -7698,8 +7698,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
boolean handled = false;
final ListenerInfo li = mListenerInfo;
boolean shouldPerformHapticFeedback = true;
if (li != null && li.mOnLongClickListener != null) {
handled = li.mOnLongClickListener.onLongClick(View.this);
if (handled) {
shouldPerformHapticFeedback =
li.mOnLongClickListener.onLongClickUseDefaultHapticFeedback(View.this);
}
}
if (!handled) {
final boolean isAnchored = !Float.isNaN(x) && !Float.isNaN(y);
@@ -7710,7 +7715,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
handled = showLongClickTooltip((int) x, (int) y);
}
}
if (handled) {
if (handled && shouldPerformHapticFeedback) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
}
return handled;
@@ -29922,6 +29927,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @return true if the callback consumed the long click, false otherwise.
*/
boolean onLongClick(View v);
/**
* Returns whether the default {@link HapticFeedbackConstants#LONG_PRESS} haptic feedback
* is performed when this listener has consumed the long click. This method is called
* immediately after {@link #onLongClick} has returned true.
*
* @param v The view that was clicked and held.
* @return true to perform the default {@link HapticFeedbackConstants#LONG_PRESS} haptic
* feedback, or false if the handler manages all haptics itself.
*/
default boolean onLongClickUseDefaultHapticFeedback(@NonNull View v) {
return true;
}
}
/**