Volley-->
Posted aWay01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Volley-->相关的知识,希望对你有一定的参考价值。
---导入Volley
- 从中心库加载---只能选择镜像(mcxiaoke等)
- github下载library源码—也是只有镜像的源码(比如:https://github.com/mcxiaoke/android-volley)
- google官方下载library源码:https://android.googlesource.com/platform/frameworks/volley
- 导入jar包
---使用Volley
- 三种基本网络请求的实现
第一步:新建请求队列:
RequestQueue mQueue = Volley.newRequestQueue(context); //一个工程用一个请求队列即可
第二步:新建request 第三步:把request加入请求队列
- StringRequest
Get请求:
mRequestQueue = Volley. newRequestQueue ( this ) ;
public void stringGetRequest() {
//新建一个字符串网络请求
//第一个参数:url--请求的网址
//第二个参数:响应监听
//第三个参数:错误监听
StringRequest request = new StringRequest("https://www.baidu.com/",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("qfstringRequest",response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
//把请求加入队列
requestQueue.add(request);
}
mRequestQueue .add(request) ;
2.JsonRequest
JsonRequest 是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。 JsonRequest 有两个直接的子类, JsonObjectRequest 和 JsonArrayRequest
JsonRequest jsonRequest = new JsonObjectRequest(Request.Method.POST,
"http://a1.greentree.cn:8029/Api/index.php/search/searchHotel",
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("volleylesson",response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> mapParam = new HashMap<String,String>();
// 设置参数
// pagesize 每页多少行
mapParam.put("pagesize", "20");
// pageindex 页码
mapParam.put("pageindex", "2");
return mapParam;
}
};
mRequestQueue.add(jsonRequest);
3.ImageRequest
public void showImgByImageReq(){
ImageRequest imageRequest = new ImageRequest("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
ivImageReq.setImageBitmap(response);
}
}, 500, 500, ImageView.ScaleType.CENTER, Bitmap.Config.ARGB_8888,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
mRequestQueue.add(imageRequest);
}
- ImageLoad
相比ImageRequest,可以设置内存缓存,可以设置加载和失败时默认显示的图片
private void showImgByImageLoad () {
int iMaxMem = (int) Runtime.getRuntime().maxMemory();
final LruCache<String,Bitmap> lruCache = new LruCache<String,Bitmap>(iMaxMem/8){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
};
ImageLoader imageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String url) {
return lruCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
lruCache.put(url,bitmap);
}
});
ImageLoader.ImageListener listener = ImageLoader.getImageListener(ivImageReq,
R.mipmap.ic_launcher,
R.mipmap.ic_launcher);
imageLoader.get("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png",
listener
);
}
- NetworkImageView
private void showNetImg() {
ImageLoader imageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String url) {
return null;
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
});
mNetworkImageView.setDefaultImageResId(R.mipmap.ic_launcher);
mNetworkImageView.setErrorImageResId(R.mipmap.ic_launcher);
mNetworkImageView.setImageUrl("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png",
imageLoader);
}
以上是关于Volley-->的主要内容,如果未能解决你的问题,请参考以下文章