Android 用于连续滚动的圆形ViewPager
我正在显示一个仅包含ImageView的ViewPager。但是,我需要它以循环的方式持续发生。例如:…c>B>A>B>c..只需实现ViePager.OnPageChangeListener:Android 用于连续滚动的圆形ViewPager,android,android-viewpager,Android,Android Viewpager,我正在显示一个仅包含ImageView的ViewPager。但是,我需要它以循环的方式持续发生。例如:…c>B>A>B>c..只需实现ViePager.OnPageChangeListener: YOUR_VIEWPAGER.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { current
YOUR_VIEWPAGER.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// not needed
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
int pageCount = pages.size();
if (currentPage == 0){
YOUR_VIEWPAGER.setCurrentItem(pageCount-2,false);
} else if (currentPage == pageCount-1){
YOUR_VIEWPAGER.setCurrentItem(1,false);
}
}
}
});
试试这个。它将得到像C A B C A一样的结果
下面是为我做的。我不希望用户从第一页滚动到最后一页。所以基本上我有三个不同的屏幕,但实际上适配器中有四个,就像这样:A->B->C->A。当用户点击第二个“A”页面,寻呼机状态变为空闲时,我无缝地切换到第一个“A”页面。我甚至有一个页面指示器,我也同样覆盖了它
val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (viewPager.currentItem == NUM_PAGES - 1) {
viewPager.setCurrentItem(0, false)
}
}
}
}
这可以正常工作,但当它从第0项切换到最后一项以及从最后一项切换到第0项时,不会显示滚动效果。您必须更改onPageScrollStateChanged()中的if语句以匹配视图偏移量,例如,您的_VIEWPAGER.setCurrentItem(pageCount-2,false);必须与您的视图匹配;)是的,这很好,但是,我关心在视图之间切换时要显示的动画(第0项和最后一项)。我认为没有解决方法:)第零个位置项在第二次之后丢失
val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (viewPager.currentItem == NUM_PAGES - 1) {
viewPager.setCurrentItem(0, false)
}
}
}
}