通过LinearSmoothScroller控制RecycleView滑动速度

一、需求产生背景

项目开发中遇到一个垂直轮播的一个需求,就想到通过Recycleview来实现,通过定时器设置每隔3s,向下滑动一个item,靠Recycleview的SmoothScroll实现平滑滚动。由于item的高度较低,滑动速度太快,效果不是很好,所以想到放慢滑动速度来解决。

通过LinearSmoothScroller解决上面的问题

代码实现如下:

val layoutManager = recycleView.layoutManager as LinearLayoutManager
val targetPosition = layoutManager.findFirstVisibleItemPosition() + 1
val linearSmoothScroller: LinearSmoothScroller = object : LinearSmoothScroller(mallSpecialSaleWidget.context) {
    override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
             return 240f / displayMetrics.densityDpi
    }
}
linearSmoothScroller.targetPosition = targetPosition
layoutManager.startSmoothScroll(linearSmoothScroller)
复制代码

在LinearSmoothScroller的方法中,calculateSpeedPerPixel()函数返回的是每个像素滑动所需的时间(单位毫秒),所以这个值设置的越大,滑动的越慢,大家可以可以根据实际需求来设置。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享