我正在使用圆形ViewPager的流行解决方案,即在前面和后面再添加两个视图。但它在第一个和最后一个之间没有顺利滑动。例如,当我们从最后一个滑动到第一个时,一旦我们的手指离开屏幕,滚动将被削减,第一张图片立即显示。
我发现的原因是回调方法" onPageSelected"在界面" OnPageChangeListener"在滚动完成之前调用。这是不可接受的,为什么新页面在旧页面消失之前被选中?
而现在,我无法解决这个问题。希望你的帮助!
以下是我的代码片段:
@Override
public void onPageSelected(int position) {
if (position == views.size() - 1) {
viewPager.setCurrentItem(1, false);
}
else if (position == 0) {
viewPager.setCurrentItem(views.size() - 2, false);
}
}
其他代码可能是不必要的,如果你遇到过这类问题,你就会明白它 第一次问我一个问题。如有不妥之处,请告诉我,谢谢!
答案 0 :(得分:0)
我受到@tobi_b answer的启发。我的解决方案是什么时候从假的最后跳到真正的第一个,等到最后滚动完成。这是我的代码,它很简单,
private final class MyPageChangeListener implements OnPageChangeListener {
private int currentPosition;
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (currentPosition == viewPager.getAdapter().getCount() - 1) {
viewPager.setCurrentItem(1, false);
}
else if (currentPosition == 0) {
viewPager.setCurrentItem(viewPager.getAdapter().getCount() - 2, false);
}
}
}
@Override
public void onPageScrolled(int scrolledPosition, float percent, int pixels) {
//empty
}
@Override
public void onPageSelected(int position) {
currentPosition = position;
}
}
然而,这种解决方案并不完美。从最后一个到第一个快速滑动时,它有一点缺陷。如果我们在很短的时间内滑动两次,第二张幻灯片将无效。这个问题需要解决。