最近刚接触安卓, 以前搞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的更多相关文章

  1. 安卓新的联网方式 Volley的使用(2)

    如果使用volley 获取 网络图片 最好还是用 Volley 提供的NetworkImageView类,  可以很轻松的 完成工作, 而且他可以设置缓存, lru 和 sd卡的缓存.一些都封装好了. ...

  2. 【第二篇】Volley的使用之加载图片

    Volley加载图片有两种方式: 1,ImageRequest 来对网络图片进行请求,放入请求队列,获取后现在在控件上面. 2,NetworkImageView 最为自定义控件来自动加载网络图片. 3 ...

  3. Android加载图片OOM错误解决方式

    前几天做项目的时候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上显示高分辨率的大图片. SQLITE採用BOLD方式存储图片,这个存取过程就不说了哈,网上一 ...

  4. Android UI开发第三十六篇——使用Volley加载图片列表

    Android开发者可能会使用Universal Image Loader或者Square`s newer Picasso这些第三方的库去处理图片的加载,那么Volley是怎么加载图片列表的呢,这一篇 ...

  5. iOS两种方式加载图片的区别

    加载图片的方式: imageNamed: imageWithContentsOfFile: 加载Assets.xcassets这里面的图片: 1> 打包后变成Assets.car 2> 拿 ...

  6. 利用Volley封装好的图片缓存处理加载图片

    Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC b ...

  7. 使用SDWebImage淡入淡出的方式加载图片

    使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFa ...

  8. UIImage加载图片的方式以及Images.xcassets对于加载方法的影响

    UIImage加载图片的方式以及Images.xcassets对于加载方法的影响 图片缓存 根据是否将创建好的对象缓存入系统内存,有两类创建UIImage对象的方法可选: 缓存:+ imageName ...

  9. 使用Volley框架中的ImageLoader来异步的加载图片

    Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.ImageLoader的内部使用ImageRequest来实现,它的构造器可 ...

随机推荐

  1. linux应用之基本命令

    linux操作系统的应用层可以细分为两层:1.系统服务层(包括GUI shell.CUI shell.cron.ftp.远程登录openssh等由init调用的服务)2.系统命令和用户应用. linu ...

  2. 4.13 BJ集训

    T1 Mobitel 题目大意: 一个全是正整数的矩阵,求从左上角到右下角的简单路径有多少条路径上数的乘积$>=K$ 思路: 由于整数分块,我们设$f(i,j,k)$表示走到$(i,j)$,$k ...

  3. RAutomation 在 Watir中的使用

    RAutomation的用法 require "rautomation" # 通过匹配部分标题来获取窗口 window = RAutomation::Window.new(:tit ...

  4. Fire Game

    Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows ...

  5. pdf2swf 转换时报This file is too complex to render- SWF only supports 65536 shapes at once

    ERROR   ID Table overflow ERROR   This file is too complex to render- SWF only supports 65536 shapes ...

  6. java:calendar类及一些比较实用的utils(一)

    在java编程中经常会用到时间日期的计算.比较.格式化等等操作,刚开始接触Calendar类时,还是在初学习期间,小小白一枚,看着这个好复杂,懒惰心理作祟也就没有怎么去学习,后来在项目中经常用到,索性 ...

  7. ElasticSearch基础+文档CRUD操作

    本篇博客是上一篇的延续,主要用来将年前学习ES的知识点做一个回顾,方便日后进行复习和汇总!因为近期项目中使用ES出现了点小问题,因此在这里做一个详细的汇总! [01]全文检索和Lucene (1)全文 ...

  8. E20180607-hm

    duplicate v. 重复; 复制; 复印;  adj. 复制的; 副本的; 完全一样的;        n. 副本; 完全一样的东西; 复制品; adjacent adj. 相邻; 邻近的,毗邻 ...

  9. POJ1699【AC自动机+状压DP_感言】

    萌新感言: 我的天呐! 因为是AC自动机的专题所以没有管别的...硬着头皮吃那份题解(代码)..[请戳简单美丽可爱的代码(没开玩笑)] 首先讲AC自动机: tag存的是以这个节点为后缀的字符串个数(已 ...

  10. lightoj1006【记忆化搜索(我是这么叫)】

    搜索的时候记录一下,注意要long long: #include<cstdio> #include<queue> #include<map> #include< ...