简介
SnapHelper发布在v4包中,其实它是对RecyclerView功能的一种拓展。
用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。
SnapHelper介绍
SnapHelper的实现原理是监听RecyclerView.OnFlingListener中的onFling接口
LinearSnapHelper
让RecyclerView滚动停止时相应的Item停留中间位置
PagerSnapHelper
25.1.0版本中官方又提供了一个PagerSnapHelper的子类,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示
这两个子类使用方式也很简单,只需要创建对象之后调用attachToRecyclerView()附着到对应的RecyclerView对象上就可以了。
new LinearSnapHelper().attachToRecyclerView(mRecyclerView);
//或者
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);
原理剖析
Fling操作
首先来了解一个概念,手指在屏幕上滑动RecyclerView然后松手,RecyclerView中的内容会顺着惯性继续往手指滑动的方向继续滚动直到停止,这个过程叫做Fling。Fling操作从手指离开屏幕瞬间被触发,在滚动停止时结束。