一句话不割。

源代码:

     adpater = new MyPagerAdapter(getSupportFragmentManager());

viewpager = (ViewPager) findViewById(R.id.pager);

viewpager.setAdapter(adpater);

     indicator = (LoopCirclePageIndicator) findViewById(R.id.yIndicator1);

indicator.setViewPager(viewpager,Config.Image_Flip_Start * size);


如果发生跳动行为,那是因为:indicator.setViewPager(viewpager,Config.Image_Flip_Start * size),因为要无限循环(假循环,其实可滑到底),所以后面那个参数是设置viewpager的当前页,让其显示当前页为几百页,进入indicator类里面找到该方法

代码:

@Override

public void setViewPager(ViewPager view, int initialPosition) {

setViewPager(view);

setCurrentItem(initialPosition);

}

setCurrentItem(initialPosition)里面有个mViewPager.setCurrentItem(item);,这里设置mViewPager的当前页,默认有滑动效果,将其改为:mViewPager.setCurrentItem(item,false)即可,这样viewpager没有滑动效果,indicator也就没有跳动情况发生了;

代码:

@Override

public void setCurrentItem(int item) {

if (mViewPager == null) {

throw new IllegalStateException("ViewPager has not been bound.");

}

mViewPager.setCurrentItem(item);

mCurrentPage = item;

invalidate();

}