vooley(二)

1. ImageRequest的用法


        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 ,否則開啓一個後臺線程來加載這張圖片。
發佈了42 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章