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

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.
ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求。
下面是ImageLoader加载图片的实现方法:

用一个类来编写图片加载和缓存的相关操作:例如:ImageWorkerManager

初始化全局图片缓存

private void init(Context context) {
        mQueue = Volley.newRequestQueue(context);
        ImageCache.ImageCacheParams cacheParams = new ImageCache.ImageCacheParams(context,
                FileManager.CACHE_IMAGE_PATH_NEW);
        cacheParams.setMemCacheSizePercent(context, 0.2f);
        imageCache = new ImageCache(cacheParams);
        mImageLoader = new ImageLoader(mQueue, imageCache);
    }

加载图片

    public void loadCommonImage(String coverUrl, ImageView imageView, int loadingDrawableId, int defaultDrawableId,
            int width, int height) {
        if (coverUrl == null) {
            coverUrl = "";
        }

        com.android.volley.plus.ImageCache cache = getImageCache();
        if (cache.getBitmapFromMemCache(coverUrl) != null) {
            imageView.setImageBitmap(cache.getBitmapFromMemCache(coverUrl));
        } else {
            ImageLoader.ImageContainer container = getImageLoader().get(coverUrl,
                    TransitionImageListener.obtain(imageView, loadingDrawableId, defaultDrawableId), width, height);
            imageView.setTag(container);
        }
    }

在Activity中的应用:

 ImageWorkerManager.getInstance(getActivity()).loadCommonImage(Utils.getPhotoUrl(mUser.getAvatar()), mAvatar,
                R.drawable.img_vip, R.drawable.img_vip, mAvatar.getWidth(), mAvatar.getHeight());

注意:volley只适合小数据,小图片。用volley上传图像什么的要注意。如果图片过大最好要压缩。

时间: 2024-08-27 17:23:12

使用Volley框架中的ImageLoader来异步的加载图片的相关文章

Android开源框架ImageLoader:加载图片的三级缓存机制

前言:可从  https://github.com/nostra13/Android-Universal-Image-Loader 下载三级缓存机制的开源框架.下文简单介绍该框架中主要的常用方法,掌握这些方法,基本就可应对多数图片下载的需求. 注意:以下代码为示意代码片断,仔细读一下应能知道怎么用.蓝色表示为开源框架中的类. 1.初始化ImageLoader类对象: ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.

使用Volley框架异步加载图片+ListView图片加载错位解决

上面使用AsyncTask异步加载图片,这里使用Volley框架,图片的缓存不需要自己去处理. BitmapCache类: package com.dystudio.ustc.asyncimageloader_listview_volley; import android.graphics.Bitmap; import android.support.v4.util.LruCache; import android.util.Log; import com.android.volley.tool

【第二篇】Volley的使用之加载图片

Volley加载图片有两种方式: 1,ImageRequest 来对网络图片进行请求,放入请求队列,获取后现在在控件上面. 2,NetworkImageView 最为自定义控件来自动加载网络图片. 3,imageloader,对图片大小,质量格式控制来按需加载图片.下面分别举例子说明使用: ImageRequest的使用来加载图片: 首先设计界面,是个Gridview来加载图片:activity_main.xml <RelativeLayout xmlns:android="http://

利用Volley封装好的图片缓存处理加载图片

Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC bitmap 缓存,这个缓存实现了ImageLoader.ImageCache 接口. 首先创建一个自定义的内存LRC bitmap缓存: /** * Created by John on 2016/4/14. */ public class LruBitmapCache extends LruCac

Android中的Glide加载图片

注意:在Android Studio的项目的build.gradle中添加: compile 'com.github.bumptech.glide:glide:3.6.1' 然后同步一下 目录: 使用Glide结合列表的样式进行图片加载 如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用 当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法 当加载图片失败时,通过error(Draw

ImageLoader加载图片

先导universal-image-loader-1.9.3包 在application配置 android:name=".MyApplication" intent权限 package com.ch.day13_imageloaderdemo; import java.io.File; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;import com.nostra13.univ

CImage::Loda 方法加载图片失败,因为vs2013中该方法不支持中文变量

最近用MFC做实验,写个图片处理的程序.基本框架是别人用vs2010写好的,我只是添加一些图片处理的函数方法就行了,但是奇怪的是我一直都不能在上面打开图片. 此bug困扰了我好几天,代码是没有问题的,因为别人电脑上就可以打开图片,为什么我的就不行...而且在CImage中的Load方法调用后,我用isNull方法检查都显示为空,即没有成功加载图片. 然后无意间发现我打开的图片路径名都含有中文,于是我改为纯英文后,果然就没有这个问题了.其实是vs2010上CImage类的Load方法接受中文变量,

Android学习笔记---使用Volley加载图片

Volley加载图片 ImageLoader使用法ImageLoader imageLoader = new ImageLoader(requestQueue,new ImageLoood()); ImageLoader.ImageListener imageListener = imageLoader.getImageListener(imageView,R.mipmap.ic_launcher,R.mipmap.ic_launcher); imageLoader.get(strUrl,ima

Picasso图片框架加载图片 使用及缓存问题

项目中用的Picasso 框架 ,加载图片.使用很方便 而且缓存机制非常强大. 正常使用我们可以这样直接调用,我把方法写到一个util里面了. 调用代码如下: PicassoUtil.displayImage(context, Constants.U_IMG_URL, R.drawable.default, iv_icon); Util工具类 import java.io.File; import android.content.Context; import android.text.Text