Volley是非常好的开源框架。下载地址:点击下载。
Volley强大的地方在于不仅能发送http请求,请求json数据【详情请见:点击查看】还能加载图片,避免OOM【缓存技术,out of memory】。
与发送http请求类似,需要先新建一个RequestQueue,之后再创建ImageLoader实例,用于缓存设置,之后再创建ImageListener类用于监听结果,最后再调用ImageLoader的get()方法加载图片。
例子:
RequestQueue requestQueue = Volley.newRequestQueue(this);
ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());
ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView, R.drawable.wait, R.drawable.failed);
imageLoader.get("http://game.chinanews.com/uploadfile/2011/0714/20110714022709842.jpg", imageListener);
BitmapCache类:
public class BitmapCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> lruCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
lruCache = new LruCache<String, Bitmap>(maxSize) {
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String s) {
return lruCache.get(s);
}
@Override
public void putBitmap(String s, Bitmap bitmap) {
lruCache.put(s, bitmap);
}
}
其中:ImageListener类的构造函数有三个参数,第一个是待显示图片的控件,第二个是在加载图片时显示的等待图片,第三个是加载图片失败时的控件显示的图片
效果如下: