一、需求产生背景
项目开发中遇到一个垂直轮播的一个需求,就想到通过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