不知道ViewPager怎么使用的同学自己去网上搜,本文只讲如何实现左右循环滑动。
有两处关键代码,第一处,生成用于PagerAdapter的View列表:
private List<View> initViews(){ List<View> listViews = new ArrayList<View>(); MyView v1 = new MyView(this, R.layout.view1); MyView v2 = new MyView(this, R.layout.view2); MyView v3 = new MyView(this, R.layout.view3); // 循环滑动:头部添加一个和原尾部相同的view,尾部添加一个和原头部相同的view MyView v0 = new MyView(this, R.layout.view3); MyView v4 = new MyView(this, R.layout.view1); listViews.add(v0); listViews.add(v1); listViews.add(v2); listViews.add(v3); listViews.add(v4); return listViews; }第二处,重写OnPageChangeListener的onPageSelected方法,当前页为0时改为倒数第二个,也就是实际需要的最后一个view;当前页为最后一个时改为第二个,即实际上的第一个view:
public void onPageSelected(int arg0) { if(arg0 == 0){ mPager.setCurrentItem(listViews.size() - 2, false); } else if(arg0 == listViews.size() - 1){ mPager.setCurrentItem(1, false); } }不要忘记在初始化时设置当前view为1,而不是默认的0:
mPager.setCurrentItem(1);
首先,头尾各添加两个空view:
private List<View> initViews(){ ...... listViews.add(new View(this)); listViews.add(v1); listViews.add(v2); listViews.add(v3); listViews.add(new View(this)); ...... }然后,OnPageChangeListener的onPageSelected方法改为下面的形式:
public void onPageSelected(int arg0) { if(arg0 == 0){ mPager.setCurrentItem(1, false); } else if(arg0 == listViews.size() - 1){ mPager.setCurrentItem(listViews.size() - 2, false); } }