|
|
|
@ -3,7 +3,9 @@ package eu.kanade.tachiyomi.ui.library
|
|
|
|
|
import android.content.Context
|
|
|
|
|
import android.util.AttributeSet
|
|
|
|
|
import android.view.MotionEvent
|
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
|
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
|
|
|
|
import eu.davidea.fastscroller.FastScroller
|
|
|
|
|
import eu.kanade.tachiyomi.R
|
|
|
|
|
import eu.kanade.tachiyomi.util.system.dpToPxEnd
|
|
|
|
@ -13,6 +15,7 @@ import kotlin.math.abs
|
|
|
|
|
class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
|
|
|
|
FastScroller(context, attrs) {
|
|
|
|
|
|
|
|
|
|
var scrollOffset = 0
|
|
|
|
|
init {
|
|
|
|
|
setViewsToUse(
|
|
|
|
|
R.layout.material_fastscroll, R.id.fast_scroller_bubble, R.id.fast_scroller_handle
|
|
|
|
@ -35,6 +38,20 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun setRecyclerViewPosition(y: Float) {
|
|
|
|
|
if (recyclerView != null) {
|
|
|
|
|
val targetPos = getTargetPos(y)
|
|
|
|
|
if (layoutManager is StaggeredGridLayoutManager) {
|
|
|
|
|
(layoutManager as StaggeredGridLayoutManager).scrollToPositionWithOffset(
|
|
|
|
|
targetPos, scrollOffset
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
(layoutManager as LinearLayoutManager).scrollToPositionWithOffset(targetPos, scrollOffset)
|
|
|
|
|
}
|
|
|
|
|
updateBubbleText(targetPos)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun updateScrollListener() {
|
|
|
|
|
onScrollListener = object : RecyclerView.OnScrollListener() {
|
|
|
|
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
|
|