Handler实现的无限自动轮播

xml布局文件写一个ViewPager

<android.support.v4.view.ViewPager
                android:id="@+id/viewpager"
                android:layout_width="match_parent"
                android:layout_height="200dp">

            </android.support.v4.view.ViewPager>

java代码中 (Activity,或Fragment,根据实际情况定,看你的ViewPager写在哪了):通过id找到控件

//找到控件
viewpager = view.findViewById(R.id.viewpager);


设置轮播

//设置轮播的方法
private void setViewPager() {
        //请求网络图片
        final String path = "接口地址";
            //参数一,上下文,参数二:网络地址,参数三:接口中new 了一个接口,重写了一个方法
            //(接口中的这个方法在获取网络数据的工具类中调用,这里用作回调)
            NetDataUtil.getData(getActivity(), path, new JsonStringCallaBack() {
            @Override
            public void getJsonData(String json) {
                //存放网络图片的集合
                List<String> image_url_list = new ArrayList<String>();
                Gson gson = new Gson();
                //解析
                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);
                List<DataDataBean.NewslistBean> newslist = dataDataBean.getNewslist();
                //遍历网络集合,拿到图片地址,装到存放图片的集合中
                for (int b=0; b<5; b++){
                    DataDataBean.NewslistBean newslistBean = newslist.get(b);
                    String picUrl = newslistBean.getPicUrl();
                    Log.d("TAG","图片地址为:"+picUrl);
                    image_url_list.add(picUrl);
                }
                //设置适配器
                pager = new MyViewPager(getActivity(), image_url_list);
                viewpager.setAdapter(pager);
                //设置显示中间位置
                viewpager.setCurrentItem(image_url_list.size()*1000000);
                //通过handler发送延时消息,没过两秒发送一次
                handler.sendEmptyMessageDelayed(0,2000);
            }
        });
    }
//Handler接收消息,并重新设置图片

Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what==0){
                viewpager.setCurrentItem(viewpager.getCurrentItem()+1);
                handler.sendEmptyMessageDelayed(0,2000);
            }
        }
    };

//viewpager适配器,自己创建一个类,来继承PagerAdapter,重写4个方法

public class MyViewPager extends PagerAdapter {
    Context context;
    List<String> image_url_list;


    public MyViewPager(Context context, List<String> image_url_list) {
        this.context=context;
        this.image_url_list=image_url_list;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        ImageLoader.getInstance().displayImage(image_url_list.get(position%image_url_list.size()),imageView, ImageLoderUtils.getDefaultOption());
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值