Android中viewpager轮播图小点儿

来源:互联网 发布:天猫数据分析 编辑:程序博客网 时间:2024/05/28 18:45
//使用handler实现图片的无限轮播
    Handler handler=new Handler(){
        public void handleMessage(android.os.Message msg) {
            if(msg.what==0){
                int currentItem = pager2.getCurrentItem();
                currentItem++;
                pager2.setCurrentItem(currentItem);
                //图片延迟两秒发送
                handler.sendEmptyMessageDelayed(0, 3000);
            }
        };

    };

//设置适配器

class MyComicAdapter extends PagerAdapter{

        

        private ArrayList<Integer> mangelist;
        public MyComicAdapter(ArrayList<Integer> mangelist) {
            this.mangelist=mangelist;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0==arg1;
        }
        @SuppressLint("NewApi")
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view2 = View.inflate(getActivity(),R.layout.image , null);
            ImageView page_image=(ImageView) view2.findViewById(R.id.page_image);
    //    page_image.setImageResource(mangelist.get(position%mangelist.size()));
           page_image.setBackground(getActivity().getResources().getDrawable(mangelist.get(position%mangelist.size())));
            container.addView(view2);
            return view2;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // TODO Auto-generated method stub
        //    super.destroyItem(container, position, object);
            container.removeView((View) object);
        }

//viewpager设置改变监听事件分为选中和未选中的两种状态

    pager2.setOnPageChangeListener(new OnPageChangeListener() {
            
            @Override
            public void onPageSelected(int position) {
                for(int i=0;i<dotslist.size();i++){
                    if(position%mangelist.size()==i){
                        dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.foused));
                    }else{
                        dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.normal));

                    }

                }
            }
            
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub
                
            }
        });
        
        return view;
    }
    //小圆点儿的代码配合xml文件的绘制
    private void initView() {
        dotslist = new ArrayList<ImageView>();
        laydian.removeAllViews();
        dotslist.clear();
        for(int i=0;i<mangelist.size();i++){
            ImageView imageView=new ImageView(getActivity());
            //判断加小店
            if(i==0){
                imageView.setImageDrawable(getResources().getDrawable(R.drawable.foused));
            }else{
                imageView.setImageDrawable(getResources().getDrawable(R.drawable.normal));

            }

            //设置小点儿的宽高
        LayoutParams params=new LayoutParams(20,20);
        params.setMargins(5, 0, 5, 0);
        //给布局添加imageview
        laydian.addView(imageView, params);
        dotslist.add(imageView);
        }
        
        
    }

1 0