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

2019-12-10 19:51:09丽君
  • private ViewPager mViewPager; //页面   public AdapterCycle(Context context, ViewPager viewPager,  
  • List<Drawable> list)   {  
  • mContext = context;   mInflater = LayoutInflater.from(context);  
  • mViewPager = viewPager;   if (list != null) {  
  • //无论是否多于1个,都要初始化第一个(index:0)   mViews = new LinkedList<View>();  
  • ImageView view = (ImageView) mInflater.inflate(   R.layout.activity_main_item_cycle, null);  
  • Drawable drawable = list.get(list.size() - 1);   view.setImageDrawable(drawable);  
  • mViews.add(view);   //注意,如果不只1个,mViews比mList多两个(头尾各多一个)  
  • //假设:mList为mList[0~N-1], mViews为mViews[0~N+1]   // mViews[0]放mList[N-1], mViews[i]放mList[i-1], mViews[N+1]放mList[0]  
  • // mViews[1~N]用于循环;首位之前的mViews[0]和末尾之后的mViews[N+1]用于跳转   // 首位之前的mViews[0],跳转到末尾(N);末位之后的mViews[N+1],跳转到首位(1)  
  • if( list.size() > 1) { //多于1个要循环   for (Drawable d : list) { //中间的N个(index:1~N)  
  • ImageView v = (ImageView) mInflater.inflate(   R.layout.activity_main_item_cycle, null);  
  • v.setImageDrawable(d);   mViews.add(v);  
  • }   //最后一个(index:N+1)  
  • view = (ImageView) mInflater.inflate(   R.layout.activity_main_item_cycle, null);  
  • drawable = dList.get(0);   view.setImageDrawable(drawable);  
  • mViews.add(view);   }  
  • }   }  
  • @Override  public int getCount() {  
  • return mViews.size();   }  
  • @Override  public boolean isViewFromObject(View view, Object object) {  
  • return view == object;   }  
  • @Override  public void destroyItem(ViewGroup container, int position, Object object) {