AndroidのVolleyフレームワークにネット画像をロードする3つの方法


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.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.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);