Volley实现图片的网络下载

来源:互联网 发布:航信开票软件下载 编辑:程序博客网 时间:2024/04/27 17:05

之前我们已经通过Volley从网络资源中下载东西了,那么Volley也可以从网络中获取网络图片等,在这里用两种方法可以实现下载图片。

第一种是用imageRequest图片请求队列来实现mageRequest imgRequest=new ImageRequest(url,listener,errorlistener);

url表示你访问的图片地址,listener表示访问成功的监听,errorlistener表示访问不成功的监听。这里的图片格式是Bitmap类型的,所以当获取到图片的网络地址时,用setImageBitmap()方法来显示在页面上。

ImageRequest imgRequest=new ImageRequest(
"http://photocdn.sohu.com/20140910/Img404194951.jpg", 
new Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
img.setImageBitmap(arg0);

}
}, 
0, 0, 
Config.ARGB_8888, 
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
Toast.makeText(VolleyActivity.this,"网络已断开",Toast.LENGTH_LONG).show();
}
});
mRequestQuene.add(imgRequest);


第二种是用图片加载器imageLoader,首先由自定义一个图片缓冲器,来设置图片缓存的大小和格式。


public class BitMapCache implements ImageCache {


private LruCache<String, Bitmap> mCache;

public BitMapCache() {
super();
int maxSize=1024*1024*10;//创建了一个10M的缓存
mCache=new LruCache<String, Bitmap>(maxSize){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();//图片大小
}

};
}


@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}


@Override
public void putBitmap(String url, Bitmap bitMap) {
mCache.put(url,bitMap);
}


}


然后在主Activity里面定义全局变量private ImageLoader imageLoader;

并对它进行初始化imageLoader=new ImageLoader(mRequestQueue, new BitMapCache());

然后当有请求时,对它进行处理。ImageListener listener=ImageLoader.getImageListener()是给图片设了一个监听器,第一个变量表示图片加载之后显示在页面的位置,第二个变量时在加载时显示的图片,第三个变量表示图片加载失败是显示的图片。

然后通过get方法把网络资源和监听器绑定在一起。

ImageListener listener=ImageLoader.getImageListener(img, R.drawable.ic_launcher, R.drawable.help_detail1);
imageLoader.get("http://photocdn.sohu.com/20140910/Img404194951.jpg", listener);

0 0
原创粉丝点击