1. 程式人生 > >Android之Volley框架載入網路圖片

Android之Volley框架載入網路圖片

更多幹貨

 

1.第一種也是最常用的一種:ImageLoader

 public void imageLoader(String url,ImageView iv){
        //ImageLoader的第一個引數就是RequestQueue:即Volley的請求佇列
        // ImageLoader的第二個引數是ImageCache:圖片快取,下面會將如何自定義快取
        ImageLoader il=new ImageLoader(queue,new BitCache());
        //接下來需要獲取一個ImageListener物件
        //getImageListener的三個引數分別為:要載入ImageView物件,圖片的預設值(網路圖片載入完成前所顯示的圖片),圖片請求出錯時的值
        ImageLoader.ImageListener imageListener=ImageLoader.getImageListener(iv,R.mipmap.ic_launcher,R.mipmap.ic_launcher);
        //呼叫ImageLoader的get()方法來載入圖片
        //get()方法第一個引數為圖片的url地址,第二個引數是上面獲取的ImageListener物件
        //後兩個引數用來指定圖片允許的最大寬度和高度,可不寫
        il.get(url,imageListener,500,500);
    }

自定義圖片快取BitCache.java

public class BitCache implements ImageLoader.ImageCache{
    /*  LruCache圖片快取處理類
     *  特點:當快取的圖片達到了預先設定值時,近期使用次數最少的圖片就會被回收
     */
    private LruCache<String ,Bitmap> myCache;
    public BitCache(){
        //設定快取大小,應用記憶體的1/8作為快取空間
        myCache=new LruCache<String,Bitmap>((int) (Runtime.getRuntime().maxMemory()/1024/8)){
            @Override
            //快取圖片大小
            protected int sizeOf(String key, Bitmap value) {
                return value.getRowBytes()*value.getHeight();
            }
        };
    }
    @Override
    //從快取中得到圖片
    public Bitmap getBitmap(String s) {
        return myCache.get(s);
    }

    @Override
    //將圖片放入快取
    public void putBitmap(String s, Bitmap bitmap) {
        myCache.put(s,bitmap);
    }
}

呼叫方式為:imageLoader(url,img);

2.第二種:ImageRequest

public void imageRequest(String url){
        ImageRequest ir=new ImageRequest(url, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                img.setImageBitmap(bitmap);
            }
        }, 500, 500, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });
        queue.add(ir);
    }

自定義圖片快取同上
呼叫方式:imageRequest(url);

3.第三種:直接使用NetworkImageView控制元件

在佈局中直接新增:

<com.android.volley.toolbox.NetworkImageView
        android:id="@+id/netImg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

主函式設定如下:

NetworkImageView networkImageView= (NetworkImageView) findViewById(R.id.netImg);
        String url ="http://10.0.2.2:8080/HttpTest/img/h5.png";
        ImageLoader imageLoader = new ImageLoader(requestQueue,new BitCache());
        networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);
        networkImageView.setErrorImageResId(R.mipmap.ic_launcher);
        networkImageView.setImageUrl(url,imageLoader);

--------------------- 作者:未跡 來源:CSDN 原文:https://blog.csdn.net/ygd1994/article/details/51348503?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!