zoukankan      html  css  js  c++  java
  • 利用Volley封装好的图片缓存处理加载图片

    Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存。这个类能够缓存文件到磁盘的指定目录。但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC bitmap 缓存,这个缓存实现了ImageLoader.ImageCache 接口。

    首先创建一个自定义的内存LRC bitmap缓存:

    /**
     * Created by John on 2016/4/14.
     */
    public class LruBitmapCache extends LruCache<String,Bitmap> implements ImageLoader.ImageCache {
    
        public LruBitmapCache(int maxSize) {
            super(maxSize);
        }
        public LruBitmapCache(Context context){
            this(getCacheSize(context));
        }
        @Override
        public Bitmap getBitmap(String url) {
            return get(url);
        }
    
        @Override
        public void putBitmap(String url, Bitmap bitmap) {
            put(url,bitmap);
        }
    
        @Override
        protected int sizeOf(String key, Bitmap value) {
            return value.getRowBytes() * value.getHeight();
        }
        public static int getCacheSize(Context ctx) {
            final DisplayMetrics displayMetrics = ctx.getResources().
                    getDisplayMetrics();
            final int screenWidth = displayMetrics.widthPixels;
            final int screenHeight = displayMetrics.heightPixels;
            // 4 bytes per pixel
            final int screenBytes = screenWidth * screenHeight * 4;
    
            return screenBytes * 3;
        }
    }

    在studio中导入velley包(直接在build.gradle中添加)

    compile 'com.mcxiaoke.volley:library-aar:1.0.0'

    在MainActivity中实例化RequestQueue

    RequestQueue mRequestQueue = Volley.newRequestQueue(this);

    然后使用ImageLoader加载图片

    ImageLoader mImageLoader = new ImageLoader(mRequestQueue, new LruBitmapCache(LruBitmapCache.getCacheSize(this)));
    mImageLoader.get(PNG_URL,ImageLoader.getImageListener(imageView1,R.mipmap.ic_launcher,R.mipmap.error));//PNG_URL是要加载的图片的地址,imageView1 是图片加载的view,图片未加载出来时显示ic_launcher,如果遇到网络错误或者加载失败则显示error。

    一个简单的网络or缓存加载就完成了。

  • 相关阅读:
    Gitlab安装与备份恢复
    Logstash使用grok插件解析Nginx日志
    SSH登录启用Google二次身份验证
    Nginx隐藏标识以及其版本号
    Nginx虚拟目录设置
    Tomcat虚拟目录设置
    sqlserver无法连接
    Howto: 如何将ArcGIS Server缓存移动到新服务器
    优酷网架构学习笔记
    .net中自定义过滤器对Response内容进行处理
  • 原文地址:https://www.cnblogs.com/android-host/p/5390356.html
Copyright © 2011-2022 走看看