Volley框架的簡單使用

一、Volley簡介。

        1.Volley起源。

                Volley是2013年Google I/O上發佈的一款網絡框架,基於Android平臺,能使網絡通信更快,更簡單,更健全。

        2.Volley框架的優點。

                1)網絡請求的排序(scheduling)。

                2)網絡請求的優先級處理。

                3)緩存。

                4)多級別取消請求。

                5)和Activity和生命週期的聯動(Activity結束時同時取消所有網絡請求)。

                6)非常適合去進行數據量不大,但通信頻繁的網絡操作。

                7)可以自定義拓展。

        3.Volley框架的缺點

            對於大數據量的網絡操作,比如說下載文件等,Volley的表現不好。

        4.項目地址

             1)官網地址:https://android.googlesource.com/platform/frameworks/volley

              2) jar包下載地址:http://download.csdn.net/detail/sinyu890807/7152015

二、Volley的基本使用

        1.Volley的API

            1)請求String類型數據:StringRequest

            2)請求JSON數據:JsonRequest

                    a)JsonObjectRequest 

                    b)JsonArrayRequest

            3)請求圖片數據:ImageRequest

        2.Volley使用步驟

            1)導入jar包

            2)添加聯網權限

                <uses-permission android:name="android.permission.INTERNET" />

            3)ApI的使用

三、Volley的案例

        1.網絡請求

                1)get請求

// get請求
        bt_volley_get.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 網絡數據地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 創建一個請求
                StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        // 設置顯示結果
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("請求失敗");
                    }
                });

                // 將請求添加到請求隊列中
                requestQueue.add(stringRequest);
            }
        });

                2)post請求

        // post請求
        bt_volley_post.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 網絡數據地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 創建一個請求
                StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        // 設置顯示結果
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("加載失敗");
                    }
                }){
                    // 添加請求參數的方法
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {

                        Map<String,String> map = new HashMap<String, String>();
//                        map.put("value1","parame1");
                        return map;
                    }
                };

                // 將請求添加到請求隊列中
                requestQueue.add(stringRequest);
            }
        });

                3)請求json數據

        // 請求json數據
        bt_volley_json.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 網絡數據地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 創建一個json請求
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        // 設置顯示結果
                        tv_volley_result.setText(jsonObject.toString());
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("失敗"+volleyError.toString());
                    }
                });

                // 將json請求添加到請求隊列中
                requestQueue.add(jsonObjectRequest);
            }
        });

        2.圖片加載

                1)ImageRequest加載圖片

        // ImageRequest加載圖片
        bt_volley_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 網絡圖片地址
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 創建一個圖片請求
                ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap bitmap) {
                        iv_volley.setImageBitmap(bitmap);
                    }
                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        iv_volley.setImageResource(R.drawable.atguigu_logo);
                    }
                });

                // 將圖片請求添加到請求隊列中
                requestQueue.add(imageRequest);
            }
        });

                2)ImageLoader加載圖片

        // ImageLoader加載圖片
        bt_volley_imageloader.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 創建一個帶緩存的ImageLoader
                ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());

                // 獲取圖片的監聽:參數1:用於顯示圖片的ImageView控件;參數2:加載圖片的過程中顯示的圖片
                // 參數3:加載圖片失敗的情況下顯示的圖片
                ImageLoader.ImageListener imageListener = imageLoader.getImageListener(iv_volley, R.drawable.atguigu_logo, R.drawable.atguigu_logo);

                // 網絡圖片地址
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 加載圖片
                imageLoader.get(url, imageListener);
            }
        });
/**
 * 緩存類
 */
public class BitmapCache implements ImageLoader.ImageCache {
    private LruCache<String, Bitmap> mCache;

    public BitmapCache() {
        int maxSize = 10 * 1024 * 1024;
        mCache = new LruCache<String, Bitmap>(maxSize) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

    @Override
    public Bitmap getBitmap(String url) {
        return mCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        mCache.put(url, bitmap);
    }
}
              3)NetworkImageView加載圖片
         // networkimageview顯示圖片
        bt_volley_networkimageview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 創建一個請求隊列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 創建一個帶緩存的ImageLoader
                ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());

                // 設置默認圖片
                iv_volley_network.setDefaultImageResId(R.drawable.atguigu_logo);

                // 設置請求失敗後的圖片
                iv_volley_network.setErrorImageResId(R.drawable.atguigu_logo);
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 設置顯示的圖片
                iv_volley_network.setImageUrl(url, imageLoader);
            }
        });
  看到此,是不是接的EventBus的簡單使用是不是很簡單,謝謝瀏覽!

     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章