安卓新的联网方式 Volley的使用(一)加载图片与 json
最近刚接触安卓, 以前搞wp ,一对比起来 ,安卓怎么这么麻烦。联网必须要重新开一个线程才可以。而且加载网络图片也很麻烦。。。花了很久一直卡在快速滑动加载网络图片的listview上面 ,一直很纠结痛苦。。。
but 今天发现了 新的联网方式,感激谷歌啊。Volley
忽然发现以前那些 HttpClient或者HttpUrlConnection 都去死吧 。。还是你好用啊。。
用法
ImageVIew 加载图片
核心ImageRequest
1首先
private RequestQueue mQueue;
2在OnCreate方法中对其进行初始化
mQueue = Volley.newRequestQueue(this);
3 创建ImageRequest对象,并将其添加到mQueue中
public void readBitmapViaVolley(String imgUrl, final ImageView imageView) {
ImageRequest imgRequest = new ImageRequest(imgUrl,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
// TODO Auto-generated method stub
imageView.setImageBitmap(arg0);
}
}, //紫色代码 表示 联网成功后的回调
300,
200,
Config.ARGB_8888,
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) { }
}); //联网失败后 的回调。
mQueue.add(imgRequest); //添加到mQueue中,完成绑定。
}
在上面,我们可以看到,在ImageRequest的构造函数中,我们就可以直接将一些关于Bitmap的参数给传进去了,比如长宽等信息,然后在其返回的Response.Listener中获得返回的结果,就是一个Bitmap了,并在onResponse函数中对ImageView进行设置,最后将其添加到mQueue中。
上面的代码 和httpclient 与HttpUrlConnection 在多线程中访问图片的效果是一样的,只是代码简洁了很多。。哈哈 再一次感谢谷歌。
ImageVIew 加载Json
首先 老样子
private RequestQueue mQueue;
mQueue = Volley.newRequestQueue(this);
public void getWeatherInfo(){
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(WEATHER_LINK, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject arg0) {
list.clear();
Iterator<String> it = arg0.keys();
while(it.hasNext()){
String key = it.next();
JSONObject obj = null;
try {
obj = arg0.getJSONObject(key);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (obj != null) {
Iterator<String> objIt = obj.keys();
while (objIt.hasNext()) {
String objKey = objIt.next();
String objValue;
try {
objValue = obj.getString(objKey);
HashMap<String, String> map = new HashMap<String, String>();
map.put("title", objKey);
map.put("content", objValue);
Log.v(TAG, "title = " + objKey + " | content = " + objValue);
list.add(map);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Log.v(TAG, "list.size = " + list.size());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
}
});
mQueue.add(jsonObjectRequest);
根据json 数据的不同 ,可以使用 JsonArrayRequest 或者JsonObjectRequest
安卓新的联网方式 Volley的使用(一)加载图片与 json的更多相关文章
- 安卓新的联网方式 Volley的使用(2)
如果使用volley 获取 网络图片 最好还是用 Volley 提供的NetworkImageView类, 可以很轻松的 完成工作, 而且他可以设置缓存, lru 和 sd卡的缓存.一些都封装好了. ...
- 【第二篇】Volley的使用之加载图片
Volley加载图片有两种方式: 1,ImageRequest 来对网络图片进行请求,放入请求队列,获取后现在在控件上面. 2,NetworkImageView 最为自定义控件来自动加载网络图片. 3 ...
- Android加载图片OOM错误解决方式
前几天做项目的时候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上显示高分辨率的大图片. SQLITE採用BOLD方式存储图片,这个存取过程就不说了哈,网上一 ...
- Android UI开发第三十六篇——使用Volley加载图片列表
Android开发者可能会使用Universal Image Loader或者Square`s newer Picasso这些第三方的库去处理图片的加载,那么Volley是怎么加载图片列表的呢,这一篇 ...
- iOS两种方式加载图片的区别
加载图片的方式: imageNamed: imageWithContentsOfFile: 加载Assets.xcassets这里面的图片: 1> 打包后变成Assets.car 2> 拿 ...
- 利用Volley封装好的图片缓存处理加载图片
Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC b ...
- 使用SDWebImage淡入淡出的方式加载图片
使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFa ...
- UIImage加载图片的方式以及Images.xcassets对于加载方法的影响
UIImage加载图片的方式以及Images.xcassets对于加载方法的影响 图片缓存 根据是否将创建好的对象缓存入系统内存,有两类创建UIImage对象的方法可选: 缓存:+ imageName ...
- 使用Volley框架中的ImageLoader来异步的加载图片
Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.ImageLoader的内部使用ImageRequest来实现,它的构造器可 ...
随机推荐
- HTML layout高仿QQ GUI
1. [图片] QQ20130804162049.png 2. [代码]AAuto 代码 import win.ui;import web.layout;/*DSG{{*/winform = ...
- the art of seo(chapter two)
***Search Engine Basics*** *Understanding How Vertical Results Fit into the SERPs* As a direct conse ...
- H3C-L2TP
l2tp enable #启用l2tp domain system authentication ppp local # 本地认证 access-limit disable state active ...
- Python ip与数字的转换方式
例子:IP:192.168.1.10 方法一: In [1]: bin(192)Out[1]: '0b11000000' In [2]: bin(168)Out[2]: '0b10101000' In ...
- https证书自签
https http over ssl = https 443/tcp ssl: v3 tls: ...
- ubuntu下的google拼音输入法(终结版)
声明:此文章是从我的51cto博客上搬至于此. Ubuntu下SCIM应该是最好的中文输入法了,它与搜狗差不多,下面介绍它的安装方法: 1)终端输入: sudo apt-get remove scim ...
- Markdown Reader 插件改造
Markdown Reader 是一款比较好用的浏览markdown文件的chrome插件 插件地址:https://chrome.google.com/webstore/detail/markdow ...
- uiautomator2.0框架
1. Uiautomator1.0 Uiautomator2.0 date 2012 2015 super class UiAutomatorTestCase InstrumentationTes ...
- 高级java工程师面试题-随笔
最近打算要换工作,也面试了几家,因为不是自己喜欢的所以拒了一些(当然也有人家不要我的.....).在面试的过程中发现对java高级程序员的考察基本上围绕知识面,知识深度两个方面来考察.下面是在面试过程 ...
- 安装APK时SO库的选择策略
此文已由作者尹彬彬授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 0X0 前言 在Android系统中,当我们安装apk文件的时候,lib目录下的so文件会被解压到app的原 ...