1. 程式人生 > >Android OkHttp 網路獲取輪播圖

Android OkHttp 網路獲取輪播圖

在這裡插入圖片描述
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>