diff options
21 files changed, 48 insertions, 13 deletions
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java index 06bb32c1a3ec..fe143dec8900 100644 --- a/core/java/android/widget/FastScroller.java +++ b/core/java/android/widget/FastScroller.java @@ -106,6 +106,9 @@ class FastScroller { */ private final int[] mPreviewResId = new int[2]; + /** The minimum touch target size in pixels. */ + private final int mMinimumTouchTarget; + /** * Padding in pixels around the preview text. Applied as layout margins to * the preview text and padding to the preview image. @@ -254,6 +257,9 @@ class FastScroller { mPrimaryText = createPreviewTextView(context); mSecondaryText = createPreviewTextView(context); + mMinimumTouchTarget = listView.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.fast_scroller_minimum_touch_target); + setStyle(styleResId); final ViewGroupOverlay overlay = listView.getOverlay(); @@ -1474,10 +1480,18 @@ class FastScroller { } private boolean isPointInsideX(float x) { + final float offset = mThumbImage.getTranslationX(); + final float left = mThumbImage.getLeft() + offset; + final float right = mThumbImage.getRight() + offset; + + // Apply the minimum touch target size. + final float targetSizeDiff = mMinimumTouchTarget - (right - left); + final float adjust = targetSizeDiff > 0 ? targetSizeDiff : 0; + if (mLayoutFromRight) { - return x >= mThumbImage.getLeft(); + return x >= mThumbImage.getLeft() - adjust; } else { - return x <= mThumbImage.getRight(); + return x <= mThumbImage.getRight() + adjust; } } @@ -1485,7 +1499,12 @@ class FastScroller { final float offset = mThumbImage.getTranslationY(); final float top = mThumbImage.getTop() + offset; final float bottom = mThumbImage.getBottom() + offset; - return y >= top && y <= bottom; + + // Apply the minimum touch target size. + final float targetSizeDiff = mMinimumTouchTarget - (bottom - top); + final float adjust = targetSizeDiff > 0 ? targetSizeDiff / 2 : 0; + + return y >= (top - adjust) && y <= (bottom + adjust); } /** diff --git a/core/res/res/drawable-hdpi/fastscroll_thumb_mtrl_alpha.png b/core/res/res/drawable-hdpi/fastscroll_thumb_mtrl_alpha.png Binary files differdeleted file mode 100644 index 2000422dd0f4..000000000000 --- a/core/res/res/drawable-hdpi/fastscroll_thumb_mtrl_alpha.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/fastscroll_track_mtrl_alpha.9.png b/core/res/res/drawable-hdpi/fastscroll_track_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 61ef6f6bf071..000000000000 --- a/core/res/res/drawable-hdpi/fastscroll_track_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_mtrl_alpha.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index a5166f2a911c..000000000000 --- a/core/res/res/drawable-hdpi/scrollbar_handle_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/fastscroll_thumb_mtrl_alpha.png b/core/res/res/drawable-ldpi/fastscroll_thumb_mtrl_alpha.png Binary files differdeleted file mode 100644 index c901730b55ce..000000000000 --- a/core/res/res/drawable-ldpi/fastscroll_thumb_mtrl_alpha.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/fastscroll_track_mtrl_alpha.9.png b/core/res/res/drawable-ldpi/fastscroll_track_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 833dac9445d9..000000000000 --- a/core/res/res/drawable-ldpi/fastscroll_track_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/scrollbar_handle_mtrl_alpha.9.png b/core/res/res/drawable-ldpi/scrollbar_handle_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 3e301ef7363d..000000000000 --- a/core/res/res/drawable-ldpi/scrollbar_handle_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/fastscroll_thumb_mtrl_alpha.png b/core/res/res/drawable-mdpi/fastscroll_thumb_mtrl_alpha.png Binary files differdeleted file mode 100644 index 4984f9c04563..000000000000 --- a/core/res/res/drawable-mdpi/fastscroll_thumb_mtrl_alpha.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/fastscroll_track_mtrl_alpha.9.png b/core/res/res/drawable-mdpi/fastscroll_track_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 404180821c40..000000000000 --- a/core/res/res/drawable-mdpi/fastscroll_track_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/scrollbar_handle_mtrl_alpha.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 1834b2e9606a..000000000000 --- a/core/res/res/drawable-mdpi/scrollbar_handle_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/fastscroll_thumb_mtrl_alpha.png b/core/res/res/drawable-xhdpi/fastscroll_thumb_mtrl_alpha.png Binary files differdeleted file mode 100644 index 9534f78363cf..000000000000 --- a/core/res/res/drawable-xhdpi/fastscroll_thumb_mtrl_alpha.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/fastscroll_track_mtrl_alpha.9.png b/core/res/res/drawable-xhdpi/fastscroll_track_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 02f017483acc..000000000000 --- a/core/res/res/drawable-xhdpi/fastscroll_track_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/scrollbar_handle_mtrl_alpha.9.png b/core/res/res/drawable-xhdpi/scrollbar_handle_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index 3c816c7d3ee9..000000000000 --- a/core/res/res/drawable-xhdpi/scrollbar_handle_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-xxhdpi/fastscroll_thumb_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/fastscroll_thumb_mtrl_alpha.png Binary files differdeleted file mode 100644 index 55a73e744aae..000000000000 --- a/core/res/res/drawable-xxhdpi/fastscroll_thumb_mtrl_alpha.png +++ /dev/null diff --git a/core/res/res/drawable-xxhdpi/fastscroll_track_mtrl_alpha.9.png b/core/res/res/drawable-xxhdpi/fastscroll_track_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index be64a94a8b0c..000000000000 --- a/core/res/res/drawable-xxhdpi/fastscroll_track_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable-xxhdpi/scrollbar_handle_mtrl_alpha.9.png b/core/res/res/drawable-xxhdpi/scrollbar_handle_mtrl_alpha.9.png Binary files differdeleted file mode 100644 index c1c0622112e9..000000000000 --- a/core/res/res/drawable-xxhdpi/scrollbar_handle_mtrl_alpha.9.png +++ /dev/null diff --git a/core/res/res/drawable/fastscroll_thumb_material.xml b/core/res/res/drawable/fastscroll_thumb_material.xml index 1288f0d08e67..4e8ccc70ba61 100644 --- a/core/res/res/drawable/fastscroll_thumb_material.xml +++ b/core/res/res/drawable/fastscroll_thumb_material.xml @@ -16,11 +16,17 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> - <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha" - android:tint="?attr/colorControlActivated" /> + <shape android:tint="?attr/colorControlActivated" + android:shape="rectangle"> + <solid android:color="@color/white" /> + <size android:width="8dp" android:height="48dp" /> + </shape> </item> <item> - <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha" - android:tint="?attr/colorControlNormal" /> + <shape android:tint="?attr/colorControlNormal" + android:shape="rectangle"> + <solid android:color="@color/white" /> + <size android:width="8dp" android:height="48dp" /> + </shape> </item> </selector> diff --git a/core/res/res/drawable/fastscroll_track_material.xml b/core/res/res/drawable/fastscroll_track_material.xml index 60f79b1a2655..7882b0542ee8 100644 --- a/core/res/res/drawable/fastscroll_track_material.xml +++ b/core/res/res/drawable/fastscroll_track_material.xml @@ -14,6 +14,9 @@ limitations under the License. --> -<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" - android:src="@drawable/fastscroll_track_mtrl_alpha" - android:tint="?attr/colorControlNormal" /> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:tint="?attr/colorControlNormal" + android:shape="rectangle"> + <solid android:color="#21ffffff" /> + <size android:width="8dp" /> +</shape> diff --git a/core/res/res/drawable/scrollbar_handle_material.xml b/core/res/res/drawable/scrollbar_handle_material.xml index a241428c899d..1b3bb9b6fd75 100644 --- a/core/res/res/drawable/scrollbar_handle_material.xml +++ b/core/res/res/drawable/scrollbar_handle_material.xml @@ -14,6 +14,9 @@ limitations under the License. --> -<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" - android:src="@drawable/scrollbar_handle_mtrl_alpha" - android:tint="?attr/colorControlNormal" /> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:tint="?attr/colorControlNormal" + android:shape="rectangle"> + <solid android:color="#42ffffff" /> + <size android:width="4dp" /> +</shape> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index b4e033c9bb48..3f840ab7a99d 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -397,6 +397,9 @@ <dimen name="datepicker_header_height">30dp</dimen> <dimen name="datepicker_header_text_size">14dp</dimen> + <!-- Minimum size of the fast scroller thumb's touch target. --> + <dimen name="fast_scroller_minimum_touch_target">48dp</dimen> + <!-- width of ImmersiveModeConfirmation (-1 for match_parent) --> <dimen name="immersive_mode_cling_width">-1px</dimen> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index cbc379b2a26d..a91119f3103f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2126,5 +2126,6 @@ <java-symbol type="string" name="android_system_label" /> <java-symbol type="string" name="system_error_wipe_data" /> <java-symbol type="string" name="system_error_manufacturer" /> + <java-symbol type="dimen" name="fast_scroller_minimum_touch_target" /> </resources> |