您的位置:首页 > 理论基础 > 计算机网络

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

2017-12-12 10:51 435 查看

一言不合就上图



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<String> picUrlList;
//此集合是bean解析过来的集合
private List<LadyBean.NewslistBean> 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();

a854
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<String>();
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.+的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐