4. 加载图片

在实际应用中,经常需要从网络上下载并显示图片。Volley也提供了从网络下载图片的几种方法,这里主要介绍两种方法:ImageRequest和ImageLoader。

(1) ImageRequest

ImageRequest和StringRequest、JsonObjectRequest类似,都继承自Request,使用方法也差不多。

    private void imageRequest(){
ImageRequest imageRequest = new ImageRequest(
"http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imgView.setImageBitmap(response);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imgView.setImageResource(R.drawable.ic_launcher);
}
});
mQueue.add(imageRequest);
}

首先创建一个ImageRequest,构造函数的参数包括图片的URL,下载图片成功的回调函数(这里把下载的图片通过一个ImageView控件显示出来),图片显示的长和宽(这里都设置为0,则按照图片原来的大小显示),图片显示的质量,下载图片失败的回调函数(这里显示一张默认图片)。运行结果如下所示:

(2) ImageLoader

有时从网上下载图片需要很长的时间,在下载的过程中显示一张图片会比较好,ImageLoader就能够实现这个功能。ImageLoader不是继承自Request的,和前面几个Request的使用略有不同,需要先定义ImageLoader和ImageListener,然后调用ImageLoader的get()方法来获取图片。

定义ImageLoader:

        ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
} @Override
public Bitmap getBitmap(String url) {
return null;
}
});

其中mQueue是请求队列。

定义ImageListener:

        ImageListener listener = ImageLoader.getImageListener(imgView,
R.drawable.ic_launcher, R.drawable.ic_launcher);

其中imgView是显示图片的控件,后面两个参数分别是下载图片过程中显示的图片和下载失败显示的图片,这里为了简单,设置的是同一张图片。

最后,使用ImageLoader的get()方法来下载图片。

        imageLoader.get("http://tech.cnr.cn/techit/201411/W020141113510671880058.jpg",
listener, 400, 200);

参数包括图片的URL、ImageListener,图片显示的长和宽。运行结果如下:

Android Volley框架的使用(3)的更多相关文章

  1. Android Volley框架的使用(1)

    在Android开发中,经常要通过HTTP请求访问网络.为了使通过HTTP请求访问网络的过程更加简单,2013年提出了新的HTTP通信框架--Volley.Volley使用起来非常简单,适用于网络访问 ...

  2. Android Volley 框架的使用(一)

    为什么要使用Volley框架 开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应 ...

  3. Android Volley框架的使用(三)

     此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git Image Request 为了更方便的使用Volley中的图片请求,我们同样先在Voll ...

  4. Android Volley框架的使用(二)

     此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到Reque ...

  5. Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)

    在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...

  6. 035 Android Volley框架进行网络请求

    1.volley入门介绍 开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行HTTP通 ...

  7. Android Volley框架的几种post提交请求方式

    首先简单描述一下Google的Android开发团队在2013年推出的一个网络通信框架Volley.它的设计目标是进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如下载文件等,Vol ...

  8. Android Volley框架的使用(2)

    3. 设置请求类型和参数 Volley默认的请求类型是GET,如果需要用POST,可以在构造函数中进行设置.设置参数可以通过重写getParams()方法来实现. private void postR ...

  9. Android Volley框架的使用(5)

    6. 设置超时时间 可以为请求设置超时时间.最大重试次数.重试时间增长因子等.其中new DefaultRetryPolicy()的第一个参数是超时时间,第二个参数是最大重试次数.第三个参数是重试时间 ...

随机推荐

  1. js菜单默认选中

    function defaultSelected() { var curr = $("#leftTree li[onclick*='" + $("#content_ifr ...

  2. MVVM架构~knockoutjs系列之文本框数符长度动态统计功能

    返回目录 这个功能为什么要写呢,因为在之前做了一个前端的页面效果,使用JS写的,感觉很累,真的,对于一个文本框长度动态统计,你要写blur,press,down什么的事件,太麻烦了,这时,我想到了kn ...

  3. Java程序员的日常—— IOUtils总结

    以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便.下面就结合源码,看看IOUTils都有 ...

  4. 我的Eclipse快捷键.

    所谓“工欲善其事必先利其器”,程序写多了,对于快捷键总有些特别的偏爱.在众多编辑器中,Eclipse算是用的比较多,也是最熟的. 最常用(也是最爱的:)) Ctrl+’ :  自动完成提示.这个快捷键 ...

  5. Atitit 多继承实现解决方案 java c#

    Atitit 多继承实现解决方案 java c# Java c#都没有提供多继承的解决方案..默认从语言级别以及没办法多继承了. 只可以崽类库的级别实现拉.. 继承的原理就是,使用一个内部super指 ...

  6. Atititi tesseract使用总结

    Atititi tesseract使用总结 消除bug,优化,重新发布.当前版本为3.02 项目下载地址为:http://code.google.com/p/tesseract-ocr. Window ...

  7. Piwik 扩展获取客户端IP地址

    piwik 数据库浏览记录存放在piwik_log_visit表中 piwik_log_visit 表有个location_ip字段,该字段存储为Byte[]字节 解析出来后的IP地址为 XXX.XX ...

  8. JS 内置对象

    内置对象的定义:有ECMAScript实现提供的.不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象. 就是说,是不需要我们开发人员先是的实例化对象就能够调用和运行 ...

  9. ASP.NET常用的SqlDbHelper类

    请引用 using System.Data;using System.Data.SqlClient; 两个命名空间. 可以满足常用的数据集,读取多条数据,以及增删改操作 代码: /// <sum ...

  10. 栈-java代码

    import java.util.Arrays; public class StackDemo { private int maxSize; private long[] stackArray; pr ...