Android進階_第三方下載工具Volley,androidvolley

來源:互聯網
上載者:User

Android進階_第三方下載工具Volley,androidvolley

Volley下載主要應用於下載文本資料和圖片資料兩個方向,下面分別介紹;

一、使用Volley開啟下載,首先要做的是導包和添加許可權;

(1)在build.gradle檔案中匯入依賴包:compile 'eu.the4thfloor.volley:com.android.volley:2015.05.28';

(2)在資訊清單檔中添加訪問網路許可權,讀、寫外存許可權;

二、常值內容上傳下載步驟:

(1)建立RequestQueue對象,用於發送請求的請求隊列;同時建立StringRequest對象,用於打包上傳和下載的資料字串;

(2)初始化資料步驟:

       (2-1)初始化請求隊列;Volley對象調用單例模式newRequestQueue(),傳入內容物件;

       (2-2)初始化StringRequest類的請求對象;傳入四個參數:

      參數1:請求方式:包括Request.Method.GET或Request.Method.POST,預設為下載Request.Method.GET;

      參數2:網路請求路徑;

      參數3:執行個體化的請求監聽對象;Response.Listener<T>,在該類中重寫onResponse(String response),進行收到請求結果後的操作;

      參數4:執行個體化的錯誤監聽對象;ErrorListener,在該類中重寫onErorResponse(VolleyError error),進行出現網路錯誤的處理;

       (2-3)如果是上傳資料,在初始化StringRequest對象之後,重寫該類中的getParams(),同時拋出AuthFailureError錯誤,該方法返回Map<String, String>類型的資料,以索引值對的形式上傳到網路;

       (2-4)在操作事件中,RequestQueue對象調用add(),添加StringRequest對象作為不同的請求和上傳資料包進行網路操作;

       (2-5)onDestroy中加上try-catch語句來捕捉所有異常,以保證這個介面正常退出;RequestQueue對象調用cancelAll()傳入”get”和”post”兩種不同形式取消網路;

三、圖片上傳下載步驟:

(1)建立RequestQueue對象,用於發送請求的請求隊列;同時建立ImageLoader對象和ImageRequest對象,用於打包下載和上傳的圖片;

(2)在下載圖片時有三種方式:

  (2-1)圖片請求方式(與文本請求類似):

    1)初始化ImageRequest類的圖片請求對象,傳入六個參數:

                     參數1:圖片下載路徑;

                     參數2:Response類的靜態監聽Listener<Bitmap>執行個體化對象,重寫onResponse()傳入Bitmap對象作為得到的映像;

                     參數3:圖片寬度大小,正常為100;

                     參數4:圖片高度大小,正常為100;

                     參數5:圖片色度方式,Bitmap.Config.RGB_565;

                     參數6:Response類的靜態監聽ErrorListener執行個體化對象,重寫onErrorResponse(),當請求圖片錯誤時調用此方法;

              2)將圖片請求對象放入請求隊列;RequestQueue對象調用add(),傳入ImageRequest對象;

  (4-2)圖片載入方式:

    1)建立ImageLoader類的圖片載入對象,可以設定圖片緩衝;傳入兩個參數:

      參數1:請求隊列RequestQueue對象;

      參數2:實現繼承ImageLoader.ImageCache的自訂圖片緩衝類;

            2)自訂圖片緩衝類繼承ImageLoader.ImageCache中,定義一個屬性兩個方法:

              屬性:圖片緩衝大小:首先確定圖片緩衝大小,擷取系統運行記憶體,Runtime.getRuntime().maxMemory()/1024/1024/8 擷取當前系統運行記憶體的1/8作為圖片緩衝;之後建立LruCache<String, Bitmap>對象,傳入圖片緩衝大小確定即可;

                  重寫getBitmap(String url),在獲得圖片時調用此方法,返回LruCach對象調用get()傳入url的Bitmap對象;

                  重寫putBitmap(String url, Bitmap bitmap),在載入圖片時調用此方法,LruCache對象調用put()傳入url下載路徑和bitmap圖片即可;

    3)建立ImageLoader.ImageListener單例,ImageListener調用靜態方法getImageListener(),傳入三個參數:

                     參數1:圖片要顯示的控制項;

                     參數2:載入圖片前的顯示映像資源Id;

                     參數3:載入圖片失敗後顯示映像資源Id;

    4)Loader對象調用get()開啟下載,傳入圖片下載路徑和ImageListener對象兩個參數;

  (4-3)使用網狀圖片控制項方式NetworkImageView:

    1)初始化NetworkImageView控制項;

    2)建立ImageLoader類的圖片載入對象,可以設定圖片緩衝;
    3)NetworkImageView對象調用setDefaultImageResId()設定載入前的圖片資源Id;

    4)NetworkImageView對象調用setErrorImageViewResId()設定載入失敗時的圖片資源Id;

    5)NetworkImageView對象調用setImageUrl()傳入兩個參數,設定載入圖片;

                     參數1:圖片下載路徑;

                     參數2:ImageLoader對象;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.