//首先要添加第三方依赖(我studio版本3.0)
//banner版本
implementation 'com.youth.banner:banner:1.4.9'
//图片Glide
implementation 'com.github.bumptech.glide:glide:3.7.0'
//http3
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
//imageloader
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
然后别忘了添加权限
<uses-permission android:name="android.permission.INTERNET" />
//创建一个图片加载的类 并继承Imageloader(记住imageloader用 com.youth.banner.loader.ImageLoader 这个包)
package com.example.day12;
import android.content.Context;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
public class GlideImageLoader extends com.youth.banner.loader.ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}
//这里是banner实现方法
package com.example.day12;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.google.gson.Gson;
import com.squareup.okhttp.Call;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.youth.banner.Banner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Banner banner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
banner = (Banner) findViewById(R.id.mybanner);
getdate();
}
private void getdate() {
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<Person.NewslistBean> list;
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
//把数据流转换成json字符串
String json = response.body().string();
Log.e("++++++++","这是访问到的数据:"+json);
//开始用gson解析
Gson gson = new Gson();
Person ladyBean = gson.fromJson(json, Person.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类)
banner.setImages(picUrlList).setImageLoader(new GlideImageLoader()).start();
}
});
}
});
}
}
//这是一个布局
<com.youth.banner.Banner
android:id="@+id/mybanner"
android:layout_width="match_parent"
android:layout_height="180dp"></com.youth.banner.Banner>