Android设置ViewPager定时轮播效果(无需设置返回Integer.MAX_VALUE)

public class Images_home_ad implements ViewPager.OnPageChangeListener {  
    private ViewPager viewPager;  
    private ImageView[] imgs;  
    private ArrayList<View> arrayList;  
    private PagerAdapter adapter;  
    private int[] setmImgID;  
    private int[] ids;  
    private int round = 0;  
    private static final int START_VIEW = 0x000;  
    private static final int STOP_VIEW = 0x001;  
    private static final int UPDATE_VIEW = 0x002;  
    private static final int RECORD_VIEW = 0x003;  
    public Images_home_ad(View view) {  
        arrayList = new ArrayList<View>();  
        init_data(view);  
        //获得id  
        viewPager = (ViewPager) view.findViewById(R.id.ll_images_home).findViewById(R.id.images_home_viewpager);  
        //实现pageradapter匿名类  
        adapter = new PagerAdapter() {  
            @Override  
            public int getCount() {  
                return arrayList.size();  
            }  
  
            @Override  
            public boolean isViewFromObject(View view, Object object) {  
                return view == object;  
            }  
  
            @Override  
            public Object instantiateItem(ViewGroup container, int position) {  
                container.addView(arrayList.get(position));  
                return arrayList.get(position);  
            }  
  
            @Override  
            public void destroyItem(ViewGroup container, int position, Object object) {  
                container.removeView(arrayList.get(position));  
            }  
        };  
        viewPager.setAdapter(adapter);  
        //设置viewpager监听以改变原点颜色  
        viewPager.addOnPageChangeListener(this);  
        Init_imgs(view);  
        /*  
         *第一次执行发送消息使得图片轮播  
         */  
        mHandler.sendEmptyMessage(START_VIEW);  
    }  
    /*  
     *周期性执行轮播图片  
     */  
    private Handler mHandler = new Handler(){  
        @Override  
        public void handleMessage(Message msg) {  
            switch (msg.what){  
                case START_VIEW:  
                    mHandler.sendEmptyMessageDelayed(UPDATE_VIEW,5000);  
                    break;  
                case STOP_VIEW:  
                    mHandler.removeMessages(UPDATE_VIEW);  
                    break;  
                case UPDATE_VIEW:  
                    round++; //必须先加1 到下一位置  
                    //轮播关键  
                    if(round == arrayList.size()){  
                        round = 0;  
                    }  
                    viewPager.setCurrentItem(round);  
                    break;  
                case RECORD_VIEW:  
                    round = msg.arg1;  
                    break;  
                default:  
                    break;  
            }  
        }  
    };  
  
  
    private void Init_imgs(View view){  
        imgs = new ImageView[arrayList.size()];  
        for (int i = 0; i < arrayList.size();i++){  
            imgs[i] = (ImageView)  view.findViewById(R.id.ll_images_home).findViewById(ids[i]);  
        }  
    }  
  
    @Override  
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  
  
    }  
  
    @Override  
    public void onPageSelected(int position) {  
        //发送消息  
        mHandler.sendMessage(Message.obtain(mHandler,RECORD_VIEW,position,0));  
        // 循环滑动改变点的颜色  
        for (int i = 0;i < arrayList.size();i++){  
            if (position == i){  
                imgs[i].setImageResource(R.drawable.point_selected);  
            }else {  
                imgs[i].setImageResource(R.drawable.point);  
            }  
        }  
    }  
    /*  
     *根据状态执行发送消息  
     */  
    @Override  
    public void onPageScrollStateChanged(int state) {  
        switch (state){  
            //用户滑动时停止轮播  
            case ViewPager.SCROLL_STATE_DRAGGING:  
                mHandler.sendEmptyMessage(STOP_VIEW);  
                break;  
            //用户滑动完成时继续轮播  
            case ViewPager.SCROLL_STATE_IDLE:  
                mHandler.sendEmptyMessage(START_VIEW);  
                break;  
        }  
    }  
    //初始化数据  
    private void init_data(View view){  
        //获取资源id  
        ids = new int[]{R.id.images_home_point01,R.id.images_home_point02,  
                R.id.images_home_point03,R.id.images_home_point04  
                ,R.id.images_home_point05,R.id.images_home_point06};  
        setmImgID = new int[]{R.raw.ad_images01,R.raw.ad_images02,R.raw.ad_images03,  
                R.raw.ad_images04,R.raw.ad_images05,R.raw.ad_images06,};  
  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[0]));  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[1]));  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[2]));  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[3]));  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[4]));  
        arrayList.add(getView(view,R.layout.images_ad01,setmImgID[5]));  
}  
    //获得加载到ViewPger中的页面和设置图片  
    public View getView(View view,int layoutID,int imgID){  
        view = View.inflate(view.getContext(),layoutID,null);  
        ImageView view1 = (ImageView) view.findViewById(R.id.images_ads01);  
        view1.setBackgroundResource(imgID);  
        return view;  
    }  
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值