Volley实现图片的网络下载

之前我们已经通过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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值