RequestQueue request=Volley.newRequestQueue(getContext());
ImageRequest imgReq=new ImageRequest("http://192.168.1.100/View.png", new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
img.setImageBitmap(response);
}
},0,0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
request.add(imgReq);
第一個參數就是圖片的URL地址,這個沒什麼需要解釋的。
第二個參數是圖片請求成功的回調,這裏我們把返回的Bitmap參數設置到ImageView中。
第三第四個參數分別用於指定允許圖片最大的寬度和高度,如果指定的網絡圖片的寬度
或高度大於這裏的最大值,則會對圖片進行壓縮,指定成0的話就表示不管圖片有多
大,都不會進行壓縮。
第五個參數用於指定圖片的顏色屬性,Bitmap.Config下的幾個常量都可以在這裏使
用,其中ARGB_8888可以展示最好的顏色屬性,每個圖片像素佔據4個字節的大小,而
RGB_565則表示每個圖片像素佔據2個字節大小。第六個參數是圖片請求失敗的回調
這裏我們當請求失敗時在ImageView中顯示一張默認圖片。
2. ImageLoader的用法
RequestQueue request = Volley.newRequestQueue(getContext());
ImageLoader img = new ImageLoader(request, new ImageCache());
ImageLoader.ImageListener listener = ImageLoader.getImageListener((ImageView) view.findViewById(R.id.imgRequest),
R.mipmap.ic_launcher, R.mipmap.klogo2);
img.get("http://192.168.1.100/View.png", listener);
---------------------------------------------------------------------------------------------------------------------------------------
ImageLoader 第一個參數就是RequestQueue對象,第二個參數是一個ImageCache對象
ImageLoader 第一個參數指定用於顯示圖片的ImageView控件,第二個參數指定加載圖片的過程中顯示的圖片,第三個參數指定加載圖片失敗的情況下顯示的圖片。
get()方法接收兩個參數,第一個參數就是圖片的URL地址,第二個參數則是剛剛獲取到的ImageListener對象
想對圖片的大小進行限制,也可以使用get()方法的重載,指定圖片允許的最大寬度和高度 get("www.baidu.com",listener, 200, 200);
---------------------------------------------------------------------------------------------------------------------------------------
public class ImageCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> mCache;
public ImageCache() {
int size = 10 * 1024 * 1024;//緩存的大小。
mCache = new LruCache<String, Bitmap>() {
@Override
protected int sizeOf(String key, Bitmap value) {
// 重寫此方法來衡量每張圖片的大小,默認返回圖片數量。
int size=value.getRowBytes() * value.getHeight();
return size;
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url,bitmap);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------
getRowBytes 用於計算位圖每一行所佔用的內存字節數。
getByteCount 用於計算位圖所佔用的內存字節數。
當向 ImageView 中加載一張圖片時,首先會在 LruCache 的緩存中進行檢查。如果找到了相應的鍵值,則會立刻更新ImageView ,否則開啓一個後臺線程來加載這張圖片。