1.首先导入依赖
/*轮播图 依赖*/
implementation 'com.youth.banner:banner:1.4.9'
//okhttp3
implementation 'com.github.bumptech.glide:glide:4.8.0'
//图片glide
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
//gson
implementation 'com.google.code.gson:gson:2.2.4'
2.添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
3.GlidApplication
public class GlidApplication extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//初始化Glid包
Glide.with(context).load(path).into(imageView);
}
}
4MainActivity
public class MainActivity extends AppCompatActivity {
private Banner mBanner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBanner = 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<MyBean.NewslistBean> list;
@Override
public void onFailure(Call call, IOException e) {
//访问网络失败的方法(自动生成的)
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//访问网络成功的方法(自动生成的)
//这是bena里边的数据
String json = response.body().string();
Log.e("mkk",json);
//开始Gson解析
Gson gson = new Gson();
MyBean myBean = gson.fromJson(json, MyBean.class);
//拿到bean类里的集合
list = myBean.getNewslist();
//设此局此集合专门用来存放图片url地址的
picUrlList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
//循环吧图片地址添加到String泛型的集合里
picUrlList.add(list.get(i).getPicUrl());
}
//子线程不能更新UI
//所以【必须】开启返回主线程的方法
runOnUiThread(new Runnable() {
@Override
public void run() {
//吧更新UI视图的代码放这里面
//把更新主UI视图的代码放这里面
// .setImagees(把图片地址集合)
// .setImageLoader(new你的Glid类)
// .start开始装逼吧
mBanner.setImages(picUrlList).setImageLoader(new GlidApplication()).start();
}
});
}
});
}
}
5布局
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="300dp"></com.youth.banner.Banner>