中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中Volley和Glide框架如何使用

發布時間:2021-06-27 18:03:34 來源:億速云 閱讀:243 作者:Leah 欄目:移動開發

本篇文章給大家分享的是有關Android中Volley和Glide框架如何使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

首先 AndroidStudio中引入Volley三種方法

引入volley.jar文件

添加volley到gradle依賴

compile 'com.mcxiaoke.volley:library:1.0.19'

通過git下載volley,添加為項目module

1:StringRequest

先熱熱身,傳入一個百度鏈接,返回一些數據。

1.1簡單請求一個網絡地址并返回數據,創建隊列

RequestQueue queue=Volley.newRequestQueue(context);

1.2在需要的地方創建StringRequest(參數..)

  • GET/POST

  • url地址

  • 響應監聽

  • 錯誤監聽

String url = "http://www.baidu.com";
StringRequest request = new StringRequest(Request.Method.GET,url,new Response.Listener<String>(){
@Override
public void onResponse(String response) {result = SecuritUtil.aesBase64Decode(response); },new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }
});

1.3最后處理要加入到隊列中

queue.add(request);

我去,這就可以了,我自己都緊張了,記得以前用httpconnect的時候,寫的真的是多,還要配置很多的東西,就連retrofit都要寫注解什么的。retrofit我之前有些文章,不怎么會用的同志可以去看看。好了,數據是出來了,我沒有截圖,大家了解,這什么都不傳是簡單,但如果想傳值呢,那就POST方法唄。

2:POST帶參數請求

在創建StringRequest方法前,我們先看一下源碼方法,4個參數。

/**
  * Creates a new request with the given method.
  *
  * @param method the request {@link Method} to use
  * @param url URL to fetch the string at
  * @param listener Listener to receive the String response
  * @param errorListener Error listener, or null to ignore errors
  */
 public StringRequest(int method, String url, Listener<String> listener,
   ErrorListener errorListener) {
  super(method, url, errorListener);
  mListener = listener;
 }

2.1:還是一樣的寫創建一個StringRequest,看注釋

StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
   @Override
   public void onResponse(String response) {
        //成功后
   }
  }, new Response.ErrorListener() {
   @Override
   public void onErrorResponse(VolleyError error) {
        //失敗后
   }
  }) {//傳值方法書寫位置
   @Override
   protected Map<String, String> getParams() throws AuthFailureError {
    HashMap<String, String> map = new HashMap<>();
    map.put("name", "liu");
    map.put("id", "123456789");
    return map;
   }
  };//這里需要注意的是getParams()方法是寫在StringRequest(內)的,括號標紅。

2.2最后要把該對象放在queue中

queue.add(request);

這就完事了,傳值直接寫上就OK了,都是鍵值對的形式。到這估計有人覺得這是傳普通值,如果我傳JSON呢,有有有,下面就是。

3:JSON格式傳參和接受數據

這個JSON傳值話也是分GET和PSOT方法,GET一般都不傳值,直接填""。POST則是用專用類JsonObjectRequest,如果你覺得不過癮還可以用

JsonArrayRequest。老規矩還是先看一下源碼

/**
  * Creates a new request.
  * @param method the HTTP method to use
  * @param url URL to fetch the JSON from
  * @param requestBody A {@link String} to post with the request. Null is allowed and
  * indicates no parameters will be posted along with request.
  * @param listener Listener to receive the JSON response
  * @param errorListener Error listener, or null to ignore errors.
  */
 public JsonObjectRequest(int method, String url, String requestBody,
        Listener<JSONObject> listener, ErrorListener errorListener) {
  super(method, url, requestBody, listener,
    errorListener);
 }

3.1:請求方式GET,無參數傳入

JsonObjectRequest json=new JsonObjectRequest(Request.Method.GET, url, "",
    new Response.Listener<JSONObject>() {
     @Override
     public void onResponse(JSONObject response) {

     }
    },
    new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {

     }
    });

3.2:請求方式POST

JSONObject jsonO=new JSONObject();
  try {
   jsonO.put("name","");
   jsonO.put("ID","");
   
  } catch (JSONException e) {
   e.printStackTrace();
  }//創建JSONObject對象
  JsonObjectRequest json=new JsonObjectRequest(Request.Method.POST, url, jsonO,
    new Response.Listener<JSONObject>() {
     @Override
     public void onResponse(JSONObject response) {
            //ok
     }
    },
    new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
            //error
     }
    });

3.3:最后要把該對象放在queue中

queue.add(request);

到這里volley怎么用來訪問網絡數據就完事了,到現在還沒有說他的圖片處理,不過這個框架真心好用,所以就寫的多了點。下面咱們來看一下他的圖片處理

4:ImageRequest, 圖片加載

 Android中Volley和Glide框架如何使用

源碼:圖片URL,響應的回調接口,最大圖片寬度,最大圖片高度,圖片配置RGB模式,錯誤的回調接口
最大圖片寬度(高度)如果不寫可以寫0,

/**
  * Creates a new image request, decoding to a maximum specified width and
  * height. If both width and height are zero, the image will be decoded to
  * its natural size. If one of the two is nonzero, that dimension will be
  * clamped and the other one will be set to preserve the image's aspect
  * ratio. If both width and height are nonzero, the image will be decoded to
  * be fit in the rectangle of dimensions width x height while keeping its
  * aspect ratio.
  *
  * @param url URL of the image
  * @param listener Listener to receive the decoded bitmap
  * @param maxWidth Maximum width to decode this bitmap to, or zero for none
  * @param maxHeight Maximum height to decode this bitmap to, or zero for
  *   none
  * @param scaleType The ImageViews ScaleType used to calculate the needed image size.
  * @param decodeConfig Format to decode the bitmap to
  * @param errorListener Error listener, or null to ignore errors
  */
 public ImageRequest(String url, Response.Listener<Bitmap> listener, int maxWidth, int maxHeight,
   ScaleType scaleType, Config decodeConfig, Response.ErrorListener errorListener) {
  super(Method.GET, url, errorListener); 
  setRetryPolicy(
    new DefaultRetryPolicy(IMAGE_TIMEOUT_MS, IMAGE_MAX_RETRIES, IMAGE_BACKOFF_MULT));
  mListener = listener;
  mDecodeConfig = decodeConfig;
  mMaxWidth = maxWidth;
  mMaxHeight = maxHeight;
  mScaleType = scaleType;
 }

用法:每個參數是什么我都在上面寫好,第幾個參數是干什么的,還有源碼供大家參考。url為圖片地址

ImageRequest request =new ImageRequest(url,Response.Listener<Bitmap>(){
 @Override
    public void onResponse(Bitmap s) {
 
     Log.i("aa", "post請求成功" + s);
     
    }
   } ,0,0,Bitmap.config.RGB_565,new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
          Log.i("aa", "post請求失敗" + s);});

5:ImageLoader 圖片緩存機制(推薦使用)

在普通版中自身是調用自己的緩存類,這個是我們不能控制的,如果想要控制的就要自己寫類來實現ImageLoader.ImageCache,這就相當于我們的自定義View,或者自定義適配器,我們可以更好的去控制我們想要的結果,比如說,我們要它最大緩存量是10M,超過這個值會發出警報等。

下面來說簡單用法

ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
   @Override
   public Bitmap getBitmap(String url) {
   //具體操作,主要針對對緩存數據大小、如何緩存。

    return null;
   }

   @Override
   public void putBitmap(String url, Bitmap bitmap) {

   }
  });
//imgShow是imageview控件。后面參數分類是失敗和過程時出現的圖片
  ImageLoader.ImageListener listener = ImageLoader.getImageListener(imgShow, R.mipmap.ic_launcher, R.drawable.btn_add_true);
  imageLoader.get(url, listener, 200, 200);

上面這個就可以對圖片進行處理,不過還有一個就是定義接口,里面有兩個方法,一個放一個是取,重點是標紅

public class ImageCache implements ImageLoader.ImageCache{
//LruCache 是專門用于緩存的類,String可以作為緩存入后的名稱,Bitmap是位圖。
 public LruCache<String,Bitmap> lruCache;
 public int maxCache=10 * 1024 *1024;//最大緩存大小 10M
 public ImageCache (){
  lruCache=new LruCache<>(maxCache);//實例化創建
 }
 @Override
 public Bitmap getBitmap(String url) {//得到位圖
  return lruCache.get(url);
 }

 @Override
 public void putBitmap(String url, Bitmap bitmap) {//存入位圖
  lruCache.put(url,bitmap);
 }
}

6:NetWorkImageView自動適配圖片(控件)

Android中Volley和Glide框架如何使用

netimg = (NetworkImageView) findViewById(R.id.id_net_img);
netimg.setErrorImageResId(R.mipmap.ic_launcher);//錯誤后
netimg.setDefaultImageResId(R.drawable.btn_add_true);//加載中默認
//這里new ImageCache()是上面自己寫的類
netimg.setImageUrl(url,new ImageLoader(queue,new ImageCache()));

到這里volley基本用法就已經夠用了,原本想寫點Glide的用法呢,還有對比,這一篇寫的就不少了。大家可以消化一下,下一篇我寫Glide的簡單用法,然后是Volley對比Glide。

以上就是Android中Volley和Glide框架如何使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵化市| 苏州市| 阆中市| 石景山区| 东安县| 乐东| 定远县| 海丰县| 鸡西市| 宝清县| 新源县| 汝南县| 普宁市| 灵川县| 古田县| 宝山区| 甘泉县| 长宁区| 凤凰县| 罗城| 青川县| 巍山| 万安县| 乐业县| 定安县| 巧家县| 永仁县| 红原县| 镇康县| 彭州市| 和田县| 视频| 盘锦市| 武夷山市| 菏泽市| 辰溪县| 枝江市| 邹城市| 原平市| 庄河市| 车致|