GcsSloop/pager-layoutmanager

滑到最后一页,然后手速快一点滑动返回上一页,就会滚回到第一页

lihuanming opened this issue · 6 comments

如题,感觉是滑动判断有问题。

总共多少页数据?
在比较用力的翻页情况下,会一次翻过2个页面的。

一共6页

对,用力就会翻过几个页面

按照现有版本的设计原理上来说一次快速滑动最多只能翻过两个页面,如果多翻了说明逻辑是存在漏洞的。
但是我刚刚测试了一下,在这边的demo里面并没有测试出上述问题。如果可能的话,能否提供一下你那边关于这一部分的代码呢?

private boolean mAllowContinuousScroll = true; //设置为false

水平滚动 6页 会执行3次从右往左滑动,会回到第一页,设置下面属性都不行
pagerManger.setAllowContinuousScroll(false);
pagerManger.setChangeSelectInScrolling(false);
其scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler,
RecyclerView.State state)中的dx往左滑动变动值感觉有问题 一样的速度却能达到负五六千
添加一行 if (dx<-1000)dx=dx/2; 缩短移动数率
@Override public int scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler, RecyclerView.State state) { Logi("scrollHorizontallyBy dx= " + dx+",mOffsetX="+mOffsetX); int newX = mOffsetX + dx; if (dx<-1000)dx=dx/2;//修改左滑dx速率负数过大,出现跳页问题 int result = dx;