アイテムを移動させる時に移動速度も変えたい
SpeedyGridLayoutManager.kt
class SpeedyGridLayoutManager : GridLayoutManager {
var MILLIS = 155f
constructor(context: Context, spanCount: Int, orientation: Int, reverseLayout: Boolean) : super(context, spanCount, orientation, reverseLayout) {}
override fun smoothScrollToPosition(recyclerView: RecyclerView, state: RecyclerView.State?, position: Int) {
val linearSmoothScroller = object: LinearSmoothScroller(recyclerView.context) {
override fun computeScrollVectorForPosition(targetPosition: Int): PointF? {
return this@SpeedyGridLayoutManager.computeScrollVectorForPosition(targetPosition)
}
override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
return MILLIS / displayMetrics.densityDpi
}
}
linearSmoothScroller.targetPosition = position
startSmoothScroll(linearSmoothScroller)
}
}
MILLSを変えれば移動速度も変わります。
あとは、#setLayoutManagerしてあげれば使えます。