如果使用volley 获取 网络图片 最好还是用 Volley 提供的NetworkImageView类,  可以很轻松的 完成工作, 而且他可以设置缓存, lru 和 sd卡的缓存。一些都封装好了。

NetworkImageView类的具体使用方式如下:

    <FrameLayout
android:id="@+id/flImageContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/gvImages"
android:layout_margin="30dp" > <com.android.volley.toolbox.NetworkImageView
android:id="@+id/nivTestView"
android:layout_width="100dp"
android:layout_height="100dp" >
</com.android.volley.toolbox.NetworkImageView>
</FrameLayout>

  

		networkImageView = (NetworkImageView) findViewById(R.id.nivTestView);  ..找到对应的 NetworkImageview

		mQueue = Volley.newRequestQueue(this);     //老样子 ,生成

		LruImageCache lruImageCache = LruImageCache.instance();  // 新加的, 这是一个实现了ImageCache 接口的缓存类 ,使用Lru

		ImageLoader imageLoader = new ImageLoader(mQueue,lruImageCache);  //主要的联网获取图片工作都交给了他

		networkImageView.setDefaultImageResId(R.drawable.ic_launcher);  //默认加载图片
networkImageView.setErrorImageResId(R.drawable.ic_launcher); //错误的图片
networkImageView.setImageUrl(URLS[1], imageLoader);

  所以在利用NetworkImageView之前,我们还需要先去实现这个接口,而Volley推荐的也就是LruCache,代码中的LruImageCache实现如下:

package com.lms.volleydemo;

import android.graphics.Bitmap;
import android.support.v4.util.LruCache; import com.android.volley.toolbox.ImageLoader.ImageCache; public class LruImageCache implements ImageCache{ private static LruCache<String, Bitmap> mMemoryCache; private static LruImageCache lruImageCache; private LruImageCache(){
// Get the Max available memory
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int cacheSize = maxMemory / 8;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize){
@Override
protected int sizeOf(String key, Bitmap bitmap){
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
} public static LruImageCache instance(){
if(lruImageCache == null){
lruImageCache = new LruImageCache();
}
return lruImageCache;
} @Override
public Bitmap getBitmap(String arg0) {
return mMemoryCache.get(arg0);
} @Override
public void putBitmap(String arg0, Bitmap arg1) {
if(getBitmap(arg0) == null){
mMemoryCache.put(arg0, arg1);
}
} }

  

2 然后开始合体了

ImageLoader imageLoader = new ImageLoader(mQueue,lruImageCache);

这里面详细 http://blog.csdn.net/linmiansheng/article/details/21293699

最新文章

  1. 认识 EXT2 文件系统
  2. ios开发网络知识 TCP,IP,HTTP,SOCKET区别和联系
  3. 使用bootstrap tooltip控件动态修改提示内容
  4. MySql学习(四) —— 函数、视图
  5. mxnet目录结构
  6. hdu 1863 - 畅通工程(MST)
  7. 关于ListView中notifyDataSetChanged()刷新数据不更新原因
  8. (2015年郑州轻工业学院ACM校赛题) G 矩阵
  9. Python初识与简介【开篇】
  10. hdu_5963_朋友(找规律)
  11. oracle登陆,在监听服务启动了的情况下,登陆用户还是报错未启动监听服务的错误(刚开始装oracle是能登陆的,重启之后装了plsql)
  12. MyBatis-Generator的配置说明和使用
  13. Java多线程知识整理
  14. [spring源码] 小白级别的源码解析ioc(二)
  15. (翻译).NET应用架构
  16. 用UpdateResource修改EXE文件图标(已修正)
  17. Android学习之基础知识十六 — Android开发高级技巧的掌握
  18. 做 Excel 的 XML schema.xsd
  19. gulp 在 angular 项目中的使用
  20. andriod获得textView的值设置textView的text

热门文章

  1. 通用双向链表的设计(参考Linux系统中的实现)
  2. bzoj 3027 [Ceoi2004] Sweet —— 生成函数
  3. TX1 ssh配置
  4. vue 重塑数组之 修改数组指定index的值
  5. C#中,当鼠标移动到控件上,动态显示提示内容 ToolTip
  6. 基于微信的SDK的学习与使用——实现产品支付
  7. C# 外界调用方法是 方法名是string类型的解决方法
  8. Java全栈工程师知识体系介绍
  9. nohup、&amp;、tail 在服务启动中的用法
  10. python 数据可视化