Android OkHttp 網路獲取輪播圖
阿新 • • 發佈:2018-11-28
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>