Volley下載主要應用於下載文本數據和圖片數據兩個方向,下麵分別介紹; 一、使用Volley開啟下載,首先要做的是導包和添加許可權; (1)在build.gradle文件中導入依賴包:compile 'eu.the4thfloor.volley:com.android.volley:2015.05. ...
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對象;