volley进行图片缓存

本文介绍如何使用Volley库中的NetworkImageView控件加载网络图片。包括创建请求队列、自定义图片缓存策略、实现ImageCache接口等步骤,并提供了一个完整的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.在布局中采用volley的netWorkImagview控件

   1.定义一个类继承ImageCache,重写一个获取bitmap和储存bitmap的方法.
       2.定义LruCahe的成员变量(匿名内部类),重新insize方法,指定单个图片的最大值
       3.使用imageCache对象调用get和put方法分别获取和返回bitmap


       4.创建请求队列.
       5.创建imageLoader对象.
       6.拿到netWorkImageview对象调用setImagUrl.



public class MainActivity extends AppCompatActivity {


    private NetworkImageView netImage;
    private String url;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
        initView();
        url = "http://10.0.3.2:8080/imgs/sunny.jpg";
    }


    public void loadImage(View v) {
        RequestQueue queue = Volley.newRequestQueue(this);
        MyImageCache imageCache = new MyImageCache();
        ImageLoader imageLoader = new ImageLoader(queue,imageCache);
        netImage.setImageUrl(url, imageLoader);
    }


    private class MyImageCache implements ImageLoader.ImageCache {


        int cacheSize = 5 * 1024 * 1024; // 5MiB,单位要统一
        LruCache bitmapCache = new LruCache(cacheSize) {


            /**计算每张图片的大小*/
            protected int sizeOf(String key, Bitmap value) {
                return value.getByteCount();
            }
        };


        //下面两个方法就是图片缓存的核心


        /**
         * 从缓存中获取
         * @param url
         * @return
         */
        @Override
        public Bitmap getBitmap(String url) {
            return (Bitmap) bitmapCache.get(url);
        }


        /**
         * 存储到缓存中
         * @param url
         * @param bitmap
         */
        @Override
        public void putBitmap(String url, Bitmap bitmap) {
            bitmapCache.put(url, bitmap);
        }
    }


    private void initView() {
        netImage = (NetworkImageView) findViewById(R.id.netImage);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值