ViewPager

来源:互联网 发布:淘宝怎么注册企业店铺 编辑:程序博客网 时间:2024/04/27 14:16

自定义适配器

public class MyPagerAdapter extends PagerAdapter{

添加两个方法

@Override//实例化Item
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(list.get(position));
            return list.get(position);
        }
        
        @Override//销毁Item
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(list.get(position));
        }

}


viewPager.setOffscreenPageLimit(3);//预加载  viewpager界面


布局中添加ViewPager

<android.support.v4.view.ViewPager>


int[] imags = {R.drawable.image1,R.drawable.image2,R.drawable.image3};

//得到数据源  图片的
        list = new ArrayList<ImageView>();
        for(int i =0;i<imags.length;i++){
            ImageView imageView = new ImageView(this);
            imageView.setImageResource(imags[i]);
            list.add(imageView);
        }


//viewpager 滑动的监听
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            /**
             * 当前viewpager被选中时   回调此方法
             * int arg0:当前选中viewpager的下标
             */
            //@Override
            public void onPageSelected(int arg0) {
                //将所有的指示图片  默认  不选中
                for(int i=0;i<imags.length;i++){
                    icons[i].setEnabled(true);
                }
                
                //将当前下标的指示图片  选中
                icons[arg0].setEnabled(false);
            }


             * viewpager正在滑动时回调的方法
             * int arg0:滚动viewpager的下标
             * float arg1:滚动的偏移量[0,1]
             *  int arg2:  偏移量  像素
            //@Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
           
             * 当前viewpager状态改变时回调
             * SCROLL_STATE_DRAGGING:正在滑动的状态
             * SCROLL_STATE_IDLE:静止状态
             * SCROLL_STATE_SETTLING:选中的状态
             */
            //@Override
            public void onPageScrollStateChanged(int arg0) {
            }
        }


//初始化图片指示
    public void initIcon(){
        LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout);
        
        icons = new ImageView[imags.length];
        for(int i=0;i<imags.length;i++){
            icons[i]= (ImageView) layout.getChildAt(i);//将布局中的指示图片加到数组中
            icons[i].setEnabled(true);
            icons[i].setTag(i);//给指示图片添加下标
            //给图片添加监听事件
            icons[i].setOnClickListener(new OnClickListener() {
                
                //@Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //viewpager滑动到当前页    (Integer) v.getTag()
                    viewPager.setCurrentItem((Integer) v.getTag());
                }
            });
            icons[0].setEnabled(false);
            
        }   
    }


//ViewPager自动循环

viewPager.setAdapter(new MyPagerAdapter());


//viewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size());
        handler.sendEmptyMessageDelayed(1, 2000);
    }
    
    //让自动轮播
    private Handler handler  = new Handler(){
        public void handleMessage(android.os.Message msg) {
            
            int i = viewPager.getCurrentItem();//获取当前显示
           if(i==list.size()-1){//判断是否是最后一条
               viewPager.setCurrentItem(0, true);  //回到第一条
           }else{
               viewPager.setCurrentItem(i+1, true);//正常往下走
          }

          //  viewPager.setCurrentItem(viewPager.getCurrentItem());

            sendEmptyMessageDelayed(1, 2000);
        };
    };




0 0
原创粉丝点击