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
diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java
index 30884ee..3dd72f9 100644
--- a/src/com/android/settings/widget/SeekBarPreference.java
+++ b/src/com/android/settings/widget/SeekBarPreference.java
@@ -27,6 +27,7 @@
 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 @@
  * 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 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 @@
         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.