1、SnapHelper说明
SnapHelper是个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。SnapHelper是个抽象类,官方提供了LinearSnapHelper、PagerSnapHelper子类。例如LinearSnapHelper可以让RecyclerView滚动停止时相应的Item停留中间位置。PagerSnapHelper可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。
2、SnapHelper使用
new LinearSnapHelper().attachToRecyclerView(mRecyclerView);
//或者
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);
创建SnapHelper对象之后调用attachToRecyclerView()附着到对应的RecyclerView对象上就可以了。
3、Fling操作
Fling操作从手指离开屏幕瞬间被触发,在滚动停止时结束。手指在屏幕上滑动RecyclerView然后松手,RecyclerView中的内容会顺着惯性继续往手指滑动的方向继续滚动直到停止,这个过程叫做Fling。
4、SnapHelper三个抽象方法说明
(1)
public abstract int findTargetSnapPosition(LayoutManager layoutManager, int velocityX, int velocityY);
说明:该方法会根据触发Fling操作的速率(参数velocityX和参数velocityY)来找到RecyclerView需要滚动到哪个位置,该位置对应的ItemView就是那个需要进行对齐的列表项。我们把这个位置称为targetSnapPosition,对应的View称为targetSnapView。如果找不到targetSnapPosition,就返回RecyclerView.NO_POSITION。
(2)
public abstract View findSnapView(LayoutManager layoutManager);
说明:该方法会找到当前layoutManager上最接近对齐位置的那个view,该view称为SanpView,对应的position称为SnapPosition。如果返回null,就表示没有需要对齐的View,也就不会做滚动对齐调整。
(3)