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) {//可以通过width,height来设置图片的最大宽度和高度,超过后volley会自动压缩。
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上传图像什么的要注意。如果图片过大最好要压缩。

最新文章

  1. js中event.target
  2. Codeforces Round #302 (Div. 2).C. Writing Code (dp)
  3. ffmpeg中ff_scale_image()内存泄露
  4. Python之编写登陆接口
  5. GraphQL学习过程应该是这样的
  6. MAC MAMP 中安装配置使用 ThinkPHP
  7. round函数解决oracle报错"OCI-22053: 溢出错误"的问题
  8. vue事件綁定
  9. h5做直播的弹幕效果
  10. Linux之chgrp
  11. visual studio的试用版评估期已结束 解决办法
  12. Mybatis最入门---数据库的下载与安装
  13. Array对象(prototype)
  14. 看了这个才发现jQuery源代码不是那么晦涩
  15. Window PHP 使用命令行模式
  16. JY播放器【蜻蜓FM电脑端,附带下载功能】
  17. 九度OJ 1535 重叠的最长子串
  18. PCIe学习笔记(15)--- TLP的ROUTING方式
  19. ruby underscore
  20. Selenium with Python 010 - unittest 框架(又称PyUnit 框架)

热门文章

  1. sql 语句 名称解析,是 由内向外的。
  2. [ufldl]Supervised Neural Networks
  3. Linux下Mysql 操作命令
  4. Java web应用中的常见字符编码问题的解决方法
  5. tomcat常用配置详解和优化方法
  6. Java基本数据类型与相应的封装类
  7. Node.js 项目的配置文件
  8. MINA学习汇总
  9. scala学习手记36 - 容器基础
  10. koa2使用&&中间件&&angular2的koa托管