Android 使用viewpager实现无限循环(定时+手动)

2019-12-10 19:51:09丽君
  • View view = mImageViews[position % count];   ((ViewPager)container).addView(view, 0);  
  • return view;   }  
  • }   protected void onCreate(Bundle savedInstanceState) {  
  • viewPager.setAdapter(new MyAdapter());   //设置ViewPager的默认项, 设置为总数的100倍,一开始才能往左滑动  
  • viewPager.setCurrentItem(count * 100);   } 

    这种做法,实际上,并没有真正达到左右无限循环;只是一般情况下,很难达到边界(不可滑动)的情况。

    通过查阅大量的资料,我发现ViewPager自身并不支持左右无限循环的功能,不得不说,这点真是太失败了。

    由于ViewPager自身不支持,我们只能自己找方法了!下面是我实现左右无限循环的方法:

    用于显示的mViews,比数据源mList,多了两个节点元素(头节点0:b和尾节点5:e用于跳转)

    下图的不带箭头的红线,是mViews根据mList初始化的情况;带箭头的红线是跳转的情况。

    具体代码如下:

     

     
    1. public class AdapterCycle extends PagerAdapter   implements ViewPager.OnPageChangeListener{  
    2. private Context mContext; // 上下文   private LayoutInflater mInflater; // 用于解XML  
    3. private LinkedList<View> mViews; // <span style="font-family: Arial, Helvetica, sans-serif;">用于</span><span style="font-family: Arial, Helvetica, sans-serif;">显示的View</span>   private List<Drawable> mList; // 数据源<span style="font-family: Arial, Helvetica, sans-serif;">Drawable</span>