Android框架Volley

简介: 对于学习android开发乐趣,这里给自己总结些Volley应用的经验,以便自己日后可以好好复习。(本人邮箱 : 893239524@qq.com)

1.Volley框架使用基本上一样的顺序(三步走):(不需要考了创建新线程的问题)

访问网络别忘了添加权限:<uses-permission android:name="android.permission.INTERNET"/>


(1).创建:RequestQueue requestQueue= Volley.newRequestQueue(this);


(2.1.1)当使用StringRequest时  

  

StringRequest stringRequest=new StringRequest(url,new Response.Listener(){},new Response.ErrorListener(){}){

public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","你自己的apikey");


    return map;


}

};

当用于接收JSON数据时,在url出写接口(如:

http://apis.baidu.com/heweather/weather/free ? city=beijing)

通过getHeaders()函数传入apikey

在Listener 的 onResponse()函数中得到JSONString 的值。


(2.1.2)也可以通过 getParams()对Json的api参数值进行设置这时url的值就变了,并且参数多的第一个是请求方式:


StringRequest stringRequest=new StringRequest(url,new 

Response.Listener(){},new Response.ErrorListener(){}){

protected Map<String, String> getParams() throws AuthFailureError {


HashMap map=new HashMap();

    map.put("city","beijing"); //对应的apiStore的参数是什么就写什么


    return map;

}

public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","你自己的apikey");


    return map;


}

};

(注意:getHeaders 、getParams()函数都是写在新代码区)



(2.2)JsonRequest的使用(两个直接子类:JsonObjectRequest和JsonArrayRequest)


JsonObjectRequest JsonObjectRequest=new JsonObjectRequest("http://apis.baidu.com/heweather/weather/free?city=beijing", new Response.Listener<JSONObject>() {},new Response.ErrorListener(){}){


public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","af02a3e0e93ef6cbb85eada01a1c40ae");


    return map;


}

};





(在Response.Listener的onResponse()方法里通过textView2.setText(jsonObject.toString()); 得到JsonString)


在onErrorResponse中通过volleyError.getMessage()的到错误提示)



//使用JsonObjectRequest 需要注意:

/*使用JsonObjectRequest或继承自JsonObjectRequest类的对象提交post请求时,


如果有参数需要提交时必须一JsonObject的json串方式提交,否则通过getParams()方法的方式提交不管用

*/



(2.3)加载网络图片

//第一个URL图片的网址   第二个Listener  第三第四为最大宽和高,第五为图片质量Config.ARGB_8888四个字节,ARGB_565 ARGB_4444两个字节  第六个ErrorListener


 ImageRequest imageRequest=new ImageRequest("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg", new Response.Listener<Bitmap>() {


@Override


    public void onResponse(Bitmap bitmap) {


imageView.setImageBitmap(bitmap);


    }


}, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {


@Override


    public void onErrorResponse(VolleyError volleyError) {


}

});


(3)添加到 requestQueue中

 requestQueue.add(imageRequest);

// requestQueue.add(JsonObjectRequest);

// requestQueue.add(stringRequest);


二.Volley还提供了 NetworkImageView控件加载网络图片(四步走)

1.首先在布局文件中创建NetworkImageView

(含有 void类型的setImageUrl()、String getImageUrl()(得到传入的URL) 、void setDefaulImageId()(设置默认图片) 、SetErrorImageId()(设置当网络加载失败时显示的图片) 等函数)


1.创建RequestQueue对象

2.创建一个ImageLoader

3.在布局文件中添加一个NetWorkImageView控件

4.设置加载图片的网络地址和imageLoader


代码演示:

//首先定义出ImageLoader


ImageLoader imageLoader=new ImageLoader(requestQueue, new ImageLoader.ImageCache() {


@Override

    public Bitmap getBitmap(String s) {

return null;

    }

@Override

    public void putBitmap(String s, Bitmap bitmap) {

}

});


networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);


networkImageView.setErrorImageResId(R.mipmap.ic_launcher);//加载失败显示图片


networkImageView.setImageUrl("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg",imageLoader);


三.自定义Request

(用Gson解析数据)

参考项目: https://github.com/linyuanbin/Volley_kaiyuan

library-1.0.19.jar 就是这里Volley的jar包)


目录
相关文章
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
147 0
|
4月前
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
156 0
|
4月前
|
XML Java Android开发
Android Studio App开发之利用图片加载框架Glide实现刷新验证码功能(附源码 简单易懂)
Android Studio App开发之利用图片加载框架Glide实现刷新验证码功能(附源码 简单易懂)
33 0
|
5月前
|
小程序 开发工具 Android开发
Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!
127 0
Donut多端框架小程序打包适配ios和安卓app
|
7月前
|
Java API Android开发
面试官,Android 怎样实现 Router 框架?(二)
面试官,Android 怎样实现 Router 框架?
|
7月前
|
ARouter IDE Java
面试官,Android 怎样实现 Router 框架?(一)
面试官,Android 怎样实现 Router 框架?
|
7月前
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
107 2
|
8月前
|
Android开发
Android手写占位式插件化框架之apk解析原理系统源码分析
Android手写占位式插件化框架之apk解析原理系统源码分析
80 0
|
8月前
|
Android开发
Android手写占位式插件化框架之Activity通信、Service通信和BroadcastReceiver通信(二)
Android手写占位式插件化框架之Activity通信、Service通信和BroadcastReceiver通信
80 0