SnapHelper实现recycleiview只能滑一页的原理

SnapHelper通过调用attachToRecycleview方法,将recycleview对象传递到封装类SnapHelper里面。

内部调用了Recycleview.addOnScrollListener 和 setOnFlingListener 方法用来监听我们recycleview滑动。

1
2
3
4
5
// Recycleview.java
// onFling用来监听惯性滑动。 这个监听recycleiview只能拥有一份
public abstract static class OnFlingListener {
public abstract boolean onFling(int velocityX, int velocityY);
}
1
2
3
4
5
6
7
8
9
// java
// 当recycleview发生滚动的时候,这个方法会被调用 这个监听recycleview可以拥有很多份
public abstract static class OnScrollListener {
// 当RecyclerView的滚动状态改变时调用的回调方法。
// SCROLL_STATE_IDLE(g) SCROLL_STATE_DRAGGING SCROLL_STATE_SETTLING.
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState){}
// 每次滚动的时候在x 和 y 轴的移动距离
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){}
}