gpt4 book ai didi

android - 在 Circular ViewPager 中切换 First 和 Last

转载 作者:太空狗 更新时间:2023-10-29 14:51:50 26 4
gpt4 key购买 nike

我对循环ViewPager使用了一个流行的解决方案,即在前面和最后添加两个 View 。但它不会在 first 和 last 之间顺利滑动。例如,当我们从最后一张右滑到第一张时,当手指离开屏幕时,滚动会减少,第一张图片会立即显示。
我发现的原因是在滚动完成之前调用了接口(interface)“OnPageChangeListener”中的回调方法“onPageSelected”。这 Not Acceptable ,为什么旧​​页面消失之前选择了新页面?而现在,我没有办法解决这个问题。希望得到您的帮助!
以下是我的代码 fragment :

@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);
}
}

其他代码可能不需要,如果你遇到过这种问题,你就清楚了。
第一次问我问题。如有不妥,请告诉我,谢谢!

最佳答案

我的灵感来自 answer来自@tobi_b。我的解决方案是什么时候从假的最后跳到真正的第一个,等到最后一个滚动完成。这是我的代码,非常简单,

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;
}

}

但是,这个解决方案并不完美。从最后一个快速滑动到第一个时,它有一点缺陷。如果我们在很短的时间内滑动两次,第二次滑动就会失效。这个问题需要解决。

关于android - 在 Circular ViewPager 中切换 First 和 Last,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com