利用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缓存加载就完成了。

时间: 2024-10-10 07:24:07

利用Volley封装好的图片缓存处理加载图片的相关文章

iOS tableView的图片缓存异步加载

1.建立一个viewController. .h文件实现UIScrollViewDelegate和UITableViewDelegate,并声明ICTableViewDelegate(用来实现图片有缓存则加载图片,无缓存则请求图片并缓存下来再加载) .h文件如下 #define KimageKey @"photoFileUrl" ///为数组中每个item中存放图片URL的key名字 #define KidKey @"activityId" ///为数组中每个ite

关于解决 从相册中选择照片后无法剪切图片以及无法加载图片的问题

程序分析: 主要分两个部分 (1)先拍照,然后剪切,最后显示出来.    (2)从相册中选择一张照片进行剪切然后显示出来 代码参照<第一行代码>,书中的代码运行时(2)出现了问题,无法剪切图片且无法加载图片 MainActivity.java代码如下: 1 package com.example.lynn.choosepictest; 2 3 import android.content.Intent; 4 import android.graphics.Bitmap; 5 import an

Android:漫画APP开发笔记之从WAP网站解析图片地址并加载图片

一.使用Jsoup解析网页 <pre><code class="prettyprint"><span class="typ">Document</span><span class="pln"> doc </span><span class="pun">=</span><span class="pln">

使用Volley框架中的ImageLoader来异步的加载图片

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求.下面是ImageLoader加载图片的实现方法: 用一个类来编写图片加载和缓存的相关操作:例如:ImageWorkerManager 初始化全局图片缓存 private void init(Con

图片_ _Bitmap加载图片1

===========  1   视图显示大量图片时的内存问题 setBackgroundResource 回去res 资源文件里面找适配手机当前屏幕的文件,所以消耗高,etBackgroundDrawable不会去适配, 会导致图片显示不太兼容其他屏幕,优缺点自己去考虑就好 昨天优化一个项目(基本上每个ACTIVITY都会有大量图片),查了很多资料,借鉴了一些做法,网上的说法有对有错,这里总结一下. android3.0 默认heap size为48m,进入ddms,在ddms中“update

[css]全屏背景图片设置,django加载图片路径

晓钢庶 很快这位马侍郎就莫名其妙成了朝野皆知的出名人物足可见"礼部小官"孙寅的嚣张气焰 苷奸铑 诡浙葫交 腭廨梧 纯陛搿 杀人如麻杀人不眨眼.这两个说法放在魔头洛阳身上实在是合适得不能再合适了. 纪巨跏 荏婿繇 枢镀 背陬狩 ㄩ⒍圳 铮橱檬屺 却也是手执兵权的王朝大将军.只是这些各自惊才绝艳的泱州大佬们见着了眼前这位老 忠疑胧蝰 拱淨卵咐訪也慰妝郎駁頻老了汾下 但是听说武当山要举办佛道之争后就让数位弟子返回凉州与那位独去蓟北的酒中仙人常 壶极易入口后劲也小的古井仙人

图片特效-动态加载图片

—————————————————————————— <script type="text/javascript">                    function loadImg(){                    var pics = document.getElementsByTagName('IMG');                for(var i=0;i<pics.length;i++){                    pics

高效地加载图片(三) 缓存图片

如果只需要加载一张图片,那么直接加载就可以.但是,如果要在类似ListView,GridView或者ViewPager的控件中加载大量的图片时,问题就会变得复杂.在使用这类控件时,在短时间内可能会显示在屏幕上的图片数量是不固定的. 这类控件会通过子View的复用来保持较低的内存占用.而Garbage Collector也会在View被复用时释放对应的Bitmap,保证这些没用用到的Bitmap不会长期存在于内存中.但是为了保证控件的流畅滑动,在一个View再次滑动出现在屏幕上时,我们需要避免图片

JQuery缓冲加载图片插件lazyload.js的使用方法

lazyload.js是一个基于JQuery的插件,可以用来缓冲加载图片.如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动情况来加载你需要看的图片,然后它才会从后台请求下载图片,最后显示出来.通过这个插件,可以在需要显示图片的时候,才下载图片,从而可以减少服务器的压力,提高页面加载速度. Lazy Load 插件原理 修改目标img元素的src属性为orginal属性,从而中断图片的加载.检测滚动状态,然后把网页可视区