3. Volley的基本使用

Volley
  • 簡介
  • 下載地址
  • API
  • 使用步驟
  • 例子

1.Volley:

一.簡介

Volley它是2013年Google I/O 大會上發(fā)布的一款網(wǎng)絡(luò)框架,基于Android平臺,能使網(wǎng)絡(luò)通信更快,更簡單,更健全。

二. 優(yōu)點

  1. 網(wǎng)絡(luò)請求的排序(scheduling)
  2. 網(wǎng)絡(luò)請求的優(yōu)先級處理
  3. 緩存
  4. 多級別取消請求
  5. 和Activity的生命周期聯(lián)動(Activity結(jié)束時同時取消所有網(wǎng)絡(luò)請求)
  6. 非常適合去進行數(shù)據(jù)量不大,但通信頻繁的網(wǎng)絡(luò)操作
  7. 可以自定義拓展

三. 缺點

    1. 對于大數(shù)據(jù)量的網(wǎng)絡(luò)操作,比如說下載文件等,Volley的表現(xiàn)不好

2. 下載地址:

官網(wǎng)地址: https://android.googlesource.com/platform/frameworks/volley

jar包地址http://download.csdn.net/detail/sinyu890807/7152015(尚硅谷上看見的)

3.API

  1. 請求String類型數(shù)據(jù):StringRequest
  2. 請求JSON數(shù)據(jù): JsonRequest
    1. JsonObjectRequest
    2. JsonArrayRequest
  3. 請求圖片數(shù)據(jù): ImageRequest

4.使用步驟

  1. 導入jar包
  2. 添加聯(lián)網(wǎng)權(quán)限:
<uses-permission android:name="android.permission.INTERNET"/>

5.例子

1.網(wǎng)絡(luò)請求

新建一個MyApplication類:

public class MyApplication extends Application
{

    public static RequestQueue requestQueue;

    @Override
    public void onCreate()
    {
        super.onCreate();
        //創(chuàng)建一個請求隊列
        requestQueue = Volley.newRequestQueue(getApplicationContext());

    }

    //返回一個RequestQueue
    public static RequestQueue getVolleyRequestQueue()
    {
        return requestQueue;
    }
}

1.get請求:

//get請求
     bt_get_volley.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
//                //創(chuàng)建一個請求隊列
//                RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
             //創(chuàng)建一個請求
             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_result_volley.setText(s);
                 }//請求失敗
             }, new Response.ErrorListener()
             {
                 @Override
                 public void onErrorResponse(VolleyError volleyError)
                 {
                     tv_result_volley.setText("加載失敗" + volleyError);
                 }
             });
             //將創(chuàng)建的請求添加到請求隊列中
             MyApplication.getVolleyRequestQueue().add(stringRequest);
         }
     });

2.post請求:

//post請求
     bt_post_volley.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
//                //創(chuàng)建一個請求隊列
//                RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
             //創(chuàng)建一個請求
             String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
             StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>()
             {
                 @Override //請求成功
                 public void onResponse(String s)
                 {
                     tv_result_volley.setText(s);
                 } //請求失敗
             }, new Response.ErrorListener()
             {
                 @Override
                 public void onErrorResponse(VolleyError volleyError)
                 {
                     tv_result_volley.setText("加載失敗" + volleyError);
                 }
             }){
                 @Override
                 protected Map<String, String> getParams() throws AuthFailureError
                 {
                     Map<String,String> map = new HashMap<String, String>();

                     //map.put("value1","params");

                     return map;
                 }
             };
             //把請求加入到請求隊列中
             MyApplication.getVolleyRequestQueue().add(request);
         }
     });

3.請求JSON數(shù)據(jù):

//請求Json數(shù)據(jù)
     bt_json_volley.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
             //創(chuàng)建一個請求
             String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
             JsonObjectRequest objectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>()
             {
                 @Override
                 public void onResponse(JSONObject jsonObject)
                 {
                     tv_result_volley.setText(jsonObject.toString());
                 }
             }, new Response.ErrorListener()
             {
                 @Override
                 public void onErrorResponse(VolleyError volleyError)
                 {
                     tv_result_volley.setText("加載失敗!" + volleyError);
                 }
             });
             //將請求加入到請求隊列中
             MyApplication.getVolleyRequestQueue().add(objectRequest);
         }
     });

4. imagerequest請求圖片

//imagerequest請求圖片
     bt_imagerequest_volley.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
             //創(chuàng)建一個請求
             String url = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3672434089,4010203203&fm=11&gp=0.jpg";
             ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>()
             {
                 @Override
                 public void onResponse(Bitmap bitmap)
                 {
                     iv_result_volley.setVisibility(View.VISIBLE);
                     iv_result_volley.setImageBitmap(bitmap);
                 }
             }, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener()
             {
                 @Override
                 public void onErrorResponse(VolleyError volleyError)
                 {
                     iv_result_volley.setImageResource(R.mipmap.ic_launcher);
                 }
             });
             //將請求添加到請求隊列中
             MyApplication.getVolleyRequestQueue().add(imageRequest);
         }
     });

5. imageloader加載圖片
先建一個緩存類:

public class BitmapCache implements ImageLoader.ImageCache
{
 private LruCache<String,Bitmap> mCache;

 public BitmapCache()
 {
     int MaxSize = 10 * 1024 * 1024; //10M
     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);
 }
}

//imageloader加載圖片
     bt_imageloader_voller.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
             //創(chuàng)建一個ImageLoader
//                ImageLoader imageLoader = new ImageLoader(MyApplication.getVolleyRequestQueue(), new ImageLoader.ImageCache()
//                {
//                    @Override
//                    public Bitmap getBitmap(String s)
//                    {
//                        return null;
//                    }
//
//                    @Override
//                    public void putBitmap(String s, Bitmap bitmap)
//                    {
//
//                    }
//                });
             ImageLoader imageLoader = new ImageLoader(MyApplication.getVolleyRequestQueue(),new BitmapCache());
             //加載圖片
             iv_result_volley.setVisibility(View.VISIBLE);
             String url = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3672434089,4010203203&fm=11&gp=0.jpg";
             ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(iv_result_volley,R.mipmap.ic_launcher,R.mipmap.ic_launcher);
             imageLoader.get(url,imageListener);
         }
     });

6. networkimageview請求圖片

//networkimageview請求圖片
     bt_networkimageview_voller.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
             iv_networkimageview_volley.setVisibility(View.VISIBLE);
             //創(chuàng)建一個
             ImageLoader imageLoader = new ImageLoader(MyApplication.getVolleyRequestQueue(),new BitmapCache());

             //設(shè)置默認圖片和異常圖片
             iv_networkimageview_volley.setDefaultImageResId(R.mipmap.ic_launcher);
             iv_networkimageview_volley.setErrorImageResId(R.mipmap.ic_launcher);
             //加載圖片
             String url = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3672434089,4010203203&fm=11&gp=0.jpg";
             iv_networkimageview_volley.setImageUrl(url,imageLoader);
         }
     });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容