volley框架的使用大都是(1)建立一个RequestQueue请求队列;(2)写一个String类型的Url;(3)新建一个请求,在请求中填入必要的参数,在成功回调的方法中写你要的操作。在失败回调方法中写错误处理操作。(4)将请求加入到请求队列中。然后大功告成。
下面是几个Volley常用的方法
(1)利用Volley获取Json数据
public void getJsonVolley() {
RequestQueue requestQueue = Volley.newRequestQueue(this);
String JSONDateUrl = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.4.255.255";
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.GET, JSONDateUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
Toast.makeText(MainActivity.this , jsonObject.toString() , Toast.LENGTH_LONG).show();
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this , "有问题" , Toast.LENGTH_LONG).show();
}
});
requestQueue.add(request);}
(2)Volley异步加载图片的方法
public void loadImageVolley()
{
RequestQueue queue = Volley.newRequestQueue(this);
String url = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
final LruCache<String , Bitmap> cache = new LruCache<String , Bitmap>(20);
ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String key) {
return cache.get(key);
}
@Override
public void putBitmap(String key, Bitmap bitmap) {
cache.put(key ,bitmap);
}
};
ImageLoader imageLoader = new ImageLoader(queue , imageCache);
ImageLoader.ImageListener listener = imageLoader.getImageListener(iv ,0 , 0);
imageLoader.get(url, listener);
}
public void NetworkImageViewLoad()
{
String imageUrl = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
RequestQueue requestQueue = Volley.newRequestQueue(this);
final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20);
ImageLoader.ImageCache imageCache = new ImageLoader.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(requestQueue, imageCache);
iv2.setTag("url");
iv2.setImageUrl(imageUrl, imageLoader);
}
注意:iv2是NetWorkImageView类型的,相当于一个自定义控件。如果不能显示图片,可能是加载的图片太大,需要设置NetWorkImageView的宽和高,它会自动压缩图片显示。