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 版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_27384769/article/details/83006837