標籤:
4. 載入圖片
在實際應用中,經常需要從網路上下載並顯示圖片。Volley也提供了從網路下載圖片的幾種方法,這裡主要介紹兩種方法:ImageRequest和ImageLoader。
(1) ImageRequest
ImageRequest和StringRequest、JsonObjectRequest類似,都繼承自Request,使用方法也差不多。
private void imageRequest(){ ImageRequest imageRequest = new ImageRequest( "http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { imgView.setImageBitmap(response); } }, 0, 0, Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { imgView.setImageResource(R.drawable.ic_launcher); } }); mQueue.add(imageRequest); }
首先建立一個ImageRequest,建構函式的參數包括圖片的URL,下載圖片成功的回呼函數(這裡把下載的圖片通過一個ImageView控制項顯示出來),圖片顯示的長和寬(這裡都設定為0,則按照圖片原來的大小顯示),圖片顯示的品質,下載圖片失敗的回呼函數(這裡顯示一張預設圖片)。運行結果如下所示:
(2) ImageLoader
有時從網上下載圖片需要很長的時間,在下載的過程中顯示一張圖片會比較好,ImageLoader就能夠實現這個功能。ImageLoader不是繼承自Request的,和前面幾個Request的使用略有不同,需要先定義ImageLoader和ImageListener,然後調用ImageLoader的get()方法來擷取圖片。
定義ImageLoader:
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() { @Override public void putBitmap(String url, Bitmap bitmap) { } @Override public Bitmap getBitmap(String url) { return null; } });
其中mQueue是請求隊列。
定義ImageListener:
ImageListener listener = ImageLoader.getImageListener(imgView, R.drawable.ic_launcher, R.drawable.ic_launcher);
其中imgView是顯示圖片的控制項,後面兩個參數分別是下載圖片過程中顯示的圖片和下載失敗顯示的圖片,這裡為了簡單,設定的是同一張圖片。
最後,使用ImageLoader的get()方法來下載圖片。
imageLoader.get("http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg", listener, 400, 200);
參數包括圖片的URL、ImageListener,圖片顯示的長和寬。運行結果如下:
Android Volley架構的使用(3)