From ecc8d8750a0dee71933a60742516981e6cd2a71d Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Thu, 2 Jan 2025 12:08:13 -0700 Subject: [PATCH] list: make fast scroll thumb less intrusive --- .../list/recycler/FastScrollRecyclerView.kt | 23 +++++++++++-------- app/src/main/res/drawable/ic_scroll_24.xml | 11 --------- app/src/main/res/drawable/ui_scroll_thumb.xml | 5 ++-- app/src/main/res/layout/view_scroll_thumb.xml | 9 ++++---- 4 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_scroll_24.xml diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt index 24d36b9dd..c11afcfff 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt @@ -72,8 +72,9 @@ class FastScrollRecyclerView constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) : AuxioRecyclerView(context, attrs, defStyleAttr) { // Thumb - private val thumbSize = context.getDimenPixels(R.dimen.size_touchable_small) - private val slider = MaterialSlider(context, thumbSize) + private val thumbWidth = context.getDimenPixels(R.dimen.spacing_mid_medium) + private val thumbHeight = context.getDimenPixels(R.dimen.size_touchable_medium) + private val slider = MaterialSlider(context, thumbWidth) private var thumbAnimator: Animator? = null private val thumbView = @@ -174,16 +175,16 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr thumbView.layoutDirection = layoutDirection thumbView.measure( - MeasureSpec.makeMeasureSpec(thumbSize, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(thumbSize, MeasureSpec.EXACTLY)) + MeasureSpec.makeMeasureSpec(thumbWidth, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(thumbHeight, MeasureSpec.EXACTLY)) val thumbTop = thumbPadding.top + thumbOffset val thumbLeft = if (isRtl) { thumbPadding.left } else { - width - thumbPadding.right - thumbSize + width - thumbPadding.right - thumbWidth } - thumbView.layout(thumbLeft, thumbTop, thumbLeft + thumbSize, thumbTop + thumbSize) + thumbView.layout(thumbLeft, thumbTop, thumbLeft + thumbWidth, thumbTop + thumbHeight) } override fun onScrolled(dx: Int, dy: Int) { @@ -233,8 +234,9 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr if (thumbView.isUnder(eventX, eventY, minTouchTargetSize)) { dragStartThumbOffset = thumbOffset - } else if (eventX > thumbView.right - thumbSize / 4) { - dragStartThumbOffset = (eventY - thumbPadding.top - thumbSize / 2f).toInt() + } else if (eventX > thumbView.right - thumbWidth / 4) { + dragStartThumbOffset = + (eventY - thumbPadding.top - thumbHeight / 2f).toInt() scrollToThumbOffset(dragStartThumbOffset) } else { return false @@ -252,7 +254,8 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr dragStartThumbOffset = thumbOffset } else { dragStartY = eventY - dragStartThumbOffset = (eventY - thumbPadding.top - thumbSize / 2f).toInt() + dragStartThumbOffset = + (eventY - thumbPadding.top - thumbHeight / 2f).toInt() scrollToThumbOffset(dragStartThumbOffset) } @@ -319,7 +322,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr private val thumbOffsetRange: Int get() { - return height - thumbPadding.top - thumbPadding.bottom - thumbSize + return height - thumbPadding.top - thumbPadding.bottom - thumbHeight } /** An interface to provide text to use in the popup when fast-scrolling. */ diff --git a/app/src/main/res/drawable/ic_scroll_24.xml b/app/src/main/res/drawable/ic_scroll_24.xml deleted file mode 100644 index 9ab04ff6c..000000000 --- a/app/src/main/res/drawable/ic_scroll_24.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ui_scroll_thumb.xml b/app/src/main/res/drawable/ui_scroll_thumb.xml index ed34a3c3f..19a93b84c 100644 --- a/app/src/main/res/drawable/ui_scroll_thumb.xml +++ b/app/src/main/res/drawable/ui_scroll_thumb.xml @@ -3,9 +3,8 @@ android:shape="rectangle" android:tint="?attr/colorSecondary"> - + + android:width="4dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/view_scroll_thumb.xml b/app/src/main/res/layout/view_scroll_thumb.xml index e0bab6f91..774195cab 100644 --- a/app/src/main/res/layout/view_scroll_thumb.xml +++ b/app/src/main/res/layout/view_scroll_thumb.xml @@ -2,14 +2,13 @@ + android:padding="@dimen/spacing_tiny" + xmlns:app="http://schemas.android.com/apk/res-auto"> + android:src="@drawable/ui_scroll_thumb" /> \ No newline at end of file