Volley是Google在2013年推出的一款网络请求的框架,主要解决数据量小但是请求频繁的情况,对于大流量的比如文件上传下载,流媒体等则表现不佳。一般用于json获取,图片加载。
要想使用volley,首先需要jar包,jar包和源码下载地址:http://download.csdn.net/detail/u013926110/8895911
1.请求json数据
1.1实例化一个RequestQueue
1.2new一个JsonObjectRequest(method, url, jsonRequest, listener, errorListener);5个参数,第一个请求的方法,第二个请求地址,第三个get则为null,post就传值,第四个response的listener,第五个错误的监听。
1.3将jsonObjectRequest加入queue中
<span style="font-size:14px;">RequestQueue queue = Volley.newRequestQueue(this);
String jsonurl = "http://www.weather.com.cn/adat/sk/101010100.html";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.GET, jsonurl, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("--response", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("--error", "error");
}
});
queue.add(jsonObjectRequest);</span>
2.异步加载图片
2.1实例化一个RequestQueue
2.2实例化一个LruCache
2.3new一个imageCache并实现putBitmap与getBitmap
2.4创建一个imageloader,传入RequsetQueue和imageCache
2.5imageloader得到一个监听,分别传入imageview的对象,默认的显示图片id,错误时显示的图片id,并返回一个listener
2.6imageloader的get方法传入图片的url,和listener
<span style="font-size:14px;"> String url = "http://d.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=456a5f3cfffaaf5184b689b9bc64b8d6/1b4c510fd9f9d72aeb28e707d62a2834349bbb58.jpg";
RequestQueue queue = Volley.newRequestQueue(this);
final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(
20);
ImageCache imageCache = new ImageCache() {
@Override
public void putBitmap(String key, Bitmap value) {
lruCache.put(key, value);
}
@Override
public Bitmap getBitmap(String key) {
return lruCache.get(key);
}
};
ImageLoader imageLoader = new ImageLoader(queue, imageCache);
ImageListener listener = imageLoader.getImageListener(mImageView,
R.drawable.ic_launcher, R.drawable.ic_launcher);
imageLoader.get(url, listener);</span>
3.用volley的自定义NetWorkImageview加载图片
3.1实例化一个RequestQueue
3.2实例化一个LruCache
3.3new一个imageCache并实现putBitmap与getBitmap
3.4创建一个imageloader,传入RequsetQueue和imageCache
3.5imageview对象setTag
3.6imageview对象设置imageurl,传入url和imageloader
String url = "http://d.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=456a5f3cfffaaf5184b689b9bc64b8d6/1b4c510fd9f9d72aeb28e707d62a2834349bbb58.jpg";
RequestQueue queue = Volley.newRequestQueue(this);
final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20);
ImageCache cache = new ImageCache() {
@Override
public void putBitmap(String key, Bitmap value) {
lruCache.put(key, value);
}
@Override
public Bitmap getBitmap(String key) {
return lruCache.get(key);
}
};
ImageLoader imageLoader = new ImageLoader(queue, cache);
mImageView2.setTag("url");
mImageView2.setImageUrl(url, imageLoader);
第二种和第三种很像,但是第二种能够在显示错误及未加载完全时都能有对应的图像加载。