android 高级之旅 (一)网络加载框架volley基本用法
来源:互联网 发布:淘宝充值刷信誉有用吗 编辑:程序博客网 时间:2024/05/17 13:42
一、关于Volley
volley是2013年谷歌i/o大会推出的网络加载框架,不同于 HttpUrlconnection 和 httpClient,, volley对网络请求的过程进行了很好的封装,volley使得网络请求变的非常简单, 使用volley框架我们也可以非常轻松的进行网络图片的加载以及对图片进行简单的处理。
volley适合进行数据量不大但是通信频繁的网络操作,但对于大数据量的网络操作,如下载文件等,volley的表现是很糟的。清楚了这些 ,我们对volley就有了一个基本的定位。
二、volley的基本使用
(一)首先,添加volley依赖。在学习初期,我们建议从网上下载volley的jar包,然后添加到项目中,这样要修改很多东西,虽然麻烦,但是对理解框架的使用有一定的好处。在熟悉了框架的使用之后,我们可以直接利用gradle快速添加依赖,只需要在gradle文件中添加如下一行代码即可
compile 'com.android.volley:volley:1.0.0'或者如下图,直接添加依赖
(二)volley的简单使用
volley的使用建议使用单例模式,自定义请求队列,建议在application中初始化请求队列,注意:要在清单文件中配置自定义的application。如下代码:
public class MyApplication extends Application { private RequestQueue requestQueue; @Override public void onCreate() { super.onCreate(); requestQueue = Volley.newRequestQueue(this); } public RequestQueue getRequestQueue() { return requestQueue; }}
StringRequest的用法:
public void btnClick1(View view) { //1.请求方式 //2.请求地址 //3.请求成功的回调 //4.请求失败的回调 StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://192.168.228.2:8080/test", new Response.Listener<String>() { @Override public void onResponse(String response) { tv.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }) { //如果是Post请求,通过重写该方法来上传参数 @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<>(); map.put("username", "张三"); map.put("password", "123456"); return map; } }; //将请求添加到请求队列中 queue.add(stringRequest); //给请求添加一个标记// stringRequest.setTag()// 取消一个请求// queue.cancelAll(); }
JsonObjectRequest用法
public void btnClick2(View view) { JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "http://www.tngou.net/api/lore/classify", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { StringBuffer sb = new StringBuffer(); try { JSONArray tngou = response.getJSONArray("tngou"); for (int i = 0; i < tngou.length(); i++) { sb.append(tngou.getJSONObject(i).getString("name")).append("\n"); } tv.setText(sb.toString()); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(jsonObjectRequest); }
JsonArrayRequest用法
public void btnClick3(View view) { JSONArray jsonArray = new JSONArray(); try { JSONObject jo1 = new JSONObject(); jo1.put("user", "zhangsan"); jo1.put("age", 38); jsonArray.put(jo1);//[{user:zhangsan,age:38}] Log.d("google.sang", "btnClick3: " + jsonArray); } catch (JSONException e) { e.printStackTrace(); } JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, "http://192.168.228.2:8080/test", jsonArray, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { StringBuffer sb = new StringBuffer(); try { for (int i = 0; i < response.length(); i++) { sb.append(response.getJSONObject(i).getString("username")).append("\n"); } tv.setText(sb.toString()); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(request); }
ImageRequest用法
public void btnClick4(View view) { ImageRequest imageRequest = new ImageRequest("http://n.sinaimg.cn/sinacn/20170309/4fdd-fychhuq3537627.jpg", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { iv.setImageBitmap(response); } }, 200, 200, ImageView.ScaleType.CENTER_CROP, Bitmap.Config.ARGB_8888, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("google.sang", "onErrorResponse: " + error); } }); queue.add(imageRequest); }
public void btnClick5(View view) { //1.构造ImageLoader对象 ImageLoader loader = new ImageLoader(queue, new BitmapCache(this)); //2.构造监听器 ImageLoader.ImageListener listener = ImageLoader.getImageListener(iv, R.mipmap.ic_launcher, R.mipmap.ic_launcher); //3.加载图片 loader.get("http://n.sinaimg.cn/sinacn/20170309/4fdd-fychhuq3537627.jpg", listener); }
阅读全文
0 0
- android 高级之旅 (一)网络加载框架volley基本用法
- Android高级之Volley框架(一):StringRequest
- Android之网络通信Volley框架用法
- Android Volley的基本用法(一)
- Android Volley详解(一) 基本用法
- Android网络框架总结Volley(一)
- Android中的网络框架 Volley(一)
- Android Volley完全解析(一),Volley的基本用法
- android volley(一)初识Volley的基本用法
- Android Volley详细解析(一):Volley基本用法
- android网络框架Volley(一)
- Android HTTP网络通信(二):Volley框架——介绍、基本用法
- android网络框架volley学习之基本数据类
- Volley网络框架的基本用法
- Volley的基本用法 使用Volley加载网络图片
- Android高级之xUtils框架(一):ViewUtils的用法
- Android 网络请求Volley库完全解析,Volley的基本用法(一)
- Volley(一), 基本用法
- css中的BFC
- 快速排序
- Alamofire进行网络请求(实训)
- 首个裸眼3D行业标准推出!真实视觉迎来发展新契机_智能
- 单例模式
- android 高级之旅 (一)网络加载框架volley基本用法
- Enum枚举类
- $.ajax()方法详解
- 分享一个不用pypcap的python抓包脚本
- JavaScript&JavaScript引擎&ECMAScript的关系
- C语言作业-5-1高精度小数
- 几种存储器的学习笔记
- MyBatis优化——log4j的使用
- Strtus2 简单的小列子