Enable hover states for SeekBarPreference

Bug: 201499839
Test: manual testing on pixel device with wired mouse

Note: change was originally set for TM-QPR branch, but now targeting UDC-DEV instead
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ec11542cbe14f874c9fe17ee4c2a4c4e29ea748c)
Merged-In: Ibbbd0e0ef627576acb5eb3f4acb6d40dcceb0371
Change-Id: Ibbbd0e0ef627576acb5eb3f4acb6d40dcceb0371
This commit is contained in:
Chris Antol
2023-03-30 00:39:24 +00:00
parent 17e504f6a8
commit 7bfd10736c

View File

@@ -27,6 +27,7 @@ import android.os.Parcelable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.SeekBar;
@@ -42,7 +43,7 @@ import com.android.settingslib.RestrictedPreference;
* Based on android.preference.SeekBarPreference, but uses support preference as base.
*/
public class SeekBarPreference extends RestrictedPreference
implements OnSeekBarChangeListener, View.OnKeyListener {
implements OnSeekBarChangeListener, View.OnKeyListener, View.OnHoverListener {
public static final int HAPTIC_FEEDBACK_MODE_NONE = 0;
public static final int HAPTIC_FEEDBACK_MODE_ON_TICKS = 1;
@@ -128,6 +129,7 @@ public class SeekBarPreference extends RestrictedPreference
public void onBindViewHolder(PreferenceViewHolder view) {
super.onBindViewHolder(view);
view.itemView.setOnKeyListener(this);
view.itemView.setOnHoverListener(this);
mSeekBar = (SeekBar) view.findViewById(
com.android.internal.R.id.seekbar);
mSeekBar.setOnSeekBarChangeListener(this);
@@ -414,6 +416,19 @@ public class SeekBarPreference extends RestrictedPreference
notifyChanged();
}
@Override
public boolean onHover(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_HOVER_ENTER:
v.setHovered(true);
break;
case MotionEvent.ACTION_HOVER_EXIT:
v.setHovered(false);
break;
}
return false;
}
/**
* SavedState, a subclass of {@link BaseSavedState}, will store the state
* of MyPreference, a subclass of Preference.