ViewPager循环滑动

最近使用 viewpager,准备做循环拖动即A->B->C->A->B->C->A->...
找了一下相关资料,只有stactoverflow上有一条比较靠谱的资料,但是不全,自己琢磨了一下,实现了循环拖动。


这里只需要对pageadapter进行操作

源代码如下:

    public class ViewPagerAdapter extends PagerAdapter{  
      
        private List<View> views;  
        Context context;  
        int mCount;  
        public ViewPagerAdapter(Context context,List<View> views){  
            this.views=views;  
            this.context=context;  
            mCount = views.size() +1;  
        }  
        @Override  
        public void destroyItem(View collection, int position, Object arg2) {  
             if (position >= views.size()-1) {  
                    int newPosition = position%views.size();  
                    position = newPosition;  
                ((ViewPager) collection).removeView(views.get(position));  
             }  
        }  
      
        @Override  
        public void finishUpdate(View arg0) {  
              
        }  
      
        @Override  
        public int getCount() {  
            return mCount;  
        }  
      
        @Override  
        public Object instantiateItem(View collection, int position) {  
              
             if (position >= views.size()-1) {  
                    int newPosition = position%views.size();  
                      
                    position = newPosition;  
                    mCount++;  
                }  
      
            try {  
                ((ViewPager) collection).addView(views.get(position),0);  
            } catch (Exception e) {  
            }  
            return views.get(position);  
        }  
      
        @Override  
        public boolean isViewFromObject(View view, Object object) {  
            return view==(object);  
        }  
      
        @Override  
        public void restoreState(Parcelable arg0, ClassLoader arg1) {  
              
        }  
      
        @Override  
        public Parcelable saveState() {  
            return null;  
        }  
      
        @Override  
        public void startUpdate(View arg0) {  
              
        }  
          
       }  

使用例子

    import java.util.ArrayList;  
    import java.util.List;  
    import android.app.Activity;  
    import android.content.Context;  
    import android.os.Bundle;  
    import android.os.Parcelable;  
    import android.support.v4.view.PagerAdapter;  
    import android.support.v4.view.ViewPager;  
    import android.view.LayoutInflater;  
    import android.view.View;  
      
    public class ViewPageDemoActivity extends Activity {  
          
        ViewPager pager;  
        LayoutInflater inflater;  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            pager=(ViewPager) this.findViewById(R.id.view_pager);  
            inflater=LayoutInflater.from(this);  
           List<View> views=new ArrayList<View>();  
           View view1=inflater.inflate(R.layout.layout1, null);  
           View view2=inflater.inflate(R.layout.layout2, null);  
           View view3=inflater.inflate(R.layout.layout3, null);  
           Views.add(view1);  
           Views.add(view2);  
           Views.add(view3);  
             
           ViewPagAdapter adapter=new ViewPagAdapter(this, views);  
           pager.setAdapter(adapter);  
          
      }  
     }    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值