Volley框架的使用-->

---导入Volley
  经常使用的版本:com.mcxiaoke.volley:library:1.0.19
---使用Volley
  • 三种基本网络请求的实现
     第一步:新建请求队列:
       RequestQueue mQueue = Volley.newRequestQueue(context);  //一个工程用一个请求队列即可
     第二步:新建request
    第三步:把request加入请求队列
  1. 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);
}

 

 

posted @ 2016-03-07 00:40  awayaaaaaaaa  阅读(207)  评论(0编辑  收藏  举报