Android Banner(无限轮播图)控件的简单使用(网络数据OkHttp3)

一言不合就上图

Android Banner(无限轮播图)控件的简单使用(网络数据OkHttp3)_第1张图片
banner是第三方集成好的直接注入依赖就可以用
老套路先注入依赖:

//banner这个版本才是王道(我的studio是2.3.3)
    compile 'com.youth.banner:banner:1.4.9'

这是配合使用的依赖(用不用看个人喜好和习惯):

//http3
    compile 'com.squareup.okhttp3:okhttp:3.9.0'

//图片Glide
    compile 'com.github.bumptech.glide:glide:3.7.0'

//Gson
    compile 'com.google.code.gson:gson:2.8.1'

然后布局:

    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="300dp">com.youth.banner.Banner>

别忘记加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

然后是图片加载:
可以用Glide,Fresco,picasso(毕加索),imageLoader等… …
我用的是Glid(没别的意思就是用习惯了glid而已)
Glide需要创建类继承imageLoader

//初始化Glic依赖包的类
public class GlidApplication extends ImageLoader {
    //继承ImageLoader生成displayImage方法
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        //初始化Glide包
        Glide.with(context).load(path).into(imageView);
    }
}

然后是代码实现banner

//初始化控件
        banner = (Banner) findViewById(R.id.banner);
        //ok网络请求
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://api.tianapi.com/meinv/?key=2a0024d1f7f558e09936f697580f1643&num=5")
                .build();
        Call call = okHttpClient.newCall(request);
        //用OkHttp里面的Call对象打点调用 异步请求数据的抽象方法
        call.enqueue(new Callback() {
            //建个集合用来存放图片url的地址
            private List picUrlList;
            //此集合是bean解析过来的集合
            private List list;

            @Override
            public void onFailure(Call call, IOException e) {
                //访问网络失败的方法(自动生成的)
            }

            //访问网络成功的方法(自动生成的)
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //把数据流转换成json字符串
                String json = response.body().string();
                Log.e("++++++++","这是访问到的数据:"+json);
                //开始用gson解析
                Gson gson = new Gson();
                LadyBean ladyBean = gson.fromJson(json, LadyBean.class);
                //拿到bean类里的集合
                list = ladyBean.getNewslist();
                Log.e("++++++++","这是bean集合里的数据:"+list);

                //设全局此集合专门用来存放图片url地址的
                picUrlList = new ArrayList();
                for (int i = 0; i < list.size(); i++) {
                    //循环把图片地址添加到string泛型的集合里
                    picUrlList.add(list.get(i).getPicUrl());
                }
                Log.e("++++++++","这是专门存放图片url集合里的数据:"+picUrlList);

                //子线程不能更新住UI
                //所以 【必须】 开启返回主线程的方法
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //把更新主UI视图的代码放这里面
                        //.setImagees(把图片地址集合)
                        //.setImageLoader(new你的Glid类)
                        //.start开始装逼吧
                        banner.setImages(picUrlList).setImageLoader(new GlidApplication()).start();
                    }
                });

            }

        });

这就OK了。

强调1点:
1我的Android studio是2.3.3版本,SDK用的v7…..26.+的

你可能感兴趣的:(控件使用)