Volley的简单应用
来源:互联网 发布:淘宝店不开了怎么注销 编辑:程序博客网 时间:2024/05/19 20:40
Volley是一个轻量级的网络请求框架,主要包括字符串请求、json对象请求、图片加载和缓存图片加载四个内容。四个方面大致相同。json请求其实也算是字符串请求,我们一般习惯拿到json字符串之后自己去解析。
首先下载volley.jar,把它放到libs,不需要add。
在清单文件中添加权限。
<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
布局文件几乎都是按钮,另加一个图片控件。
最后就是主程序部分。贴出代码,一目了然。
public class MainActivity extends AppCompatActivity { RequestQueue requestQueue = null;//请求队列 @Bind(R.id.btn_string_request) Button btnStringRequest; @Bind(R.id.btn_json_object_request) Button btnJsonObjectRequest; @Bind(R.id.btn_image_request) Button btnImageRequest; @Bind(R.id.btn_image_rloader) Button btnImageRloader; @Bind(R.id.img_icon) ImageView imgIcon; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); requestQueue = Volley.newRequestQueue(this); } @OnClick({R.id.btn_string_request, R.id.btn_json_object_request, R.id.btn_image_request, R.id.btn_image_rloader}) public void onClick(View view) { switch (view.getId()) { case R.id.btn_string_request: stringRequest(); break; case R.id.btn_json_object_request: jsonObjectRequest(); break; case R.id.btn_image_request: imageRequest(); break; case R.id.btn_image_rloader: imageLoad(); break; } } /** * imageLoader缓存加载图片 */ private void imageLoad() { //请求地址 String url = "http://www.86kx.com/uploads/allimg/161017/2301_161017093243_1.jpg"; ImageLoader imageLoader = new ImageLoader(requestQueue, new MyImageCache()); ImageLoader.ImageListener listener = imageLoader.getImageListener(imgIcon, R.mipmap.ic_launcher, R.mipmap.ic_launcher); imageLoader.get(url, listener, 0, 0); } /** * 自定义图片缓存 */ private class MyImageCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> lruCache; private int max = 10 * 1024 * 1024;//缓存大小 public MyImageCache() { lruCache = new LruCache<String, Bitmap>(max) { @Override protected int sizeOf(String key, Bitmap bitmap) { //缓存大小为图片每一行的字节数乘以高度 return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String s) { return lruCache.get(s); } @Override public void putBitmap(String s, Bitmap bitmap) { lruCache.put(s, bitmap); } } /** * 加载网络图片 */ private void imageRequest() { //请求地址 String url = "http://www.86kx.com/uploads/allimg/161017/2301_161017093243_1.jpg"; //成功回调 Response.Listener<Bitmap> listener = new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { imgIcon.setImageBitmap(bitmap); } }; //错误回调 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { imgIcon.setImageResource(R.mipmap.ic_launcher); } }; //不带参数的请求 ImageRequest imageRequest = new ImageRequest(url, listener, 0, 0, Bitmap.Config.RGB_565, errorListener); requestQueue.add(imageRequest);//加入请求队列 } /** * 请求json对象 */ private void jsonObjectRequest() { //请求地址 String url = "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0"; //成功回调 Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject s) { Log.i("成功获得的json字符串", s.toString()); } }; //错误回调 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }; //不带参数的请求 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, listener, errorListener); requestQueue.add(jsonObjectRequest);//加入请求队列 } /** * 请求字符串 */ private void stringRequest() { //请求地址 String url = "https://www.baidu.com"; //成功回调 Response.Listener<String> listener = new Response.Listener<String>() { @Override public void onResponse(String s) { Log.i("成功获得的字符串", s); } }; //错误回调 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }; //不带参数的请求 StringRequest stringRequest = new StringRequest(url, listener, errorListener); //带参数的请求,这里不进行详细演示// StringRequest stringRequest2=new StringRequest(Request.Method.POST,url,listener,errorListener){//// @Override// protected Map<String, String> getParams() throws AuthFailureError {// Map<String,String> map=new HashMap<>();// map.put("name","john");// map.put("age","37");// return map;// }// }; requestQueue.add(stringRequest);//加入请求队列 }}
运行结果:
0 0
- Volley的简单应用
- Volley的简单应用
- volley框架的简单应用
- 【Android应用】AS Volley网络访问 简单的二次封装
- Volley的应用
- volley框架的应用
- volley的简单使用
- Volley的简单使用
- Volley的简单使用
- Volley的简单实用
- volley的简单使用
- Volley简单的使用
- Volley的简单介绍
- Volley的简单使用
- Volley的简单使用
- Volley简单的使用
- Volley的简单用法
- Volley的简单使用
- Android Things:来跑一个Demo耍耍
- 解决在VS2013中使用scanf和printf的报错
- android中ContentProvider+ContentResolver示例
- 特征点检测学习_2(surf算法)
- Android View事件分发、拦截、消费机制
- Volley的简单应用
- 位运算操作
- Jenkins-Build Monitor View
- 51NOD1781 Pinball 【离散化+线段树】
- poj_1639 Picnic Planning(度限制最小生成树)
- hadoop2.6.0伪分布式环境搭建
- Android侧滑菜单——SlidingMenu详解使用
- IO流实现文件的读写(图像、音频、视频)
- 数据库SQL语言语法总结3---查询语句