Volley下载主要应用于下载文本数据和图片数据两个方向,下面分别介绍;

一、使用Volley开启下载,首先要做的是导包和添加权限;

(1)在build.gradle文件中导入依赖包:compile 'eu.the4thfloor.volley:com.android.volley:2015.05.28';

(2)在清单文件中添加访问网络权限,读、写外存权限;

二、文本内容上传下载步骤:

(1)创建RequestQueue对象,用于发送请求的请求队列;同时创建StringRequest对象,用于打包上传和下载的数据字符串;

(2)初始化数据步骤:

(2-1)初始化请求队列;Volley对象调用单例模式newRequestQueue(),传入上下文对象;

(2-2)初始化StringRequest类的请求对象;传入四个参数:

      参数1:请求方式:包括Request.Method.GET或Request.Method.POST,默认为下载Request.Method.GET;

      参数2:网络请求路径;

      参数3:实例化的请求监听对象;Response.Listener<T>,在该类中重写onResponse(String response),进行收到请求结果后的操作;

      参数4:实例化的错误监听对象;ErrorListener,在该类中重写onErorResponse(VolleyError error),进行出现网络错误的处理;

(2-3)如果是上传数据,在初始化StringRequest对象之后,重写该类中的getParams(),同时抛出AuthFailureError错误,该方法返回Map<String, String>类型的数据,以键值对的形式上传到网络;

(2-4)在操作事件中,RequestQueue对象调用add(),添加StringRequest对象作为不同的请求和上传数据包进行网络操作;

(2-5)onDestroy中加上try-catch语句来捕捉所有异常,以保证这个界面正常退出;RequestQueue对象调用cancelAll()传入”get”和”post”两种不同形式取消网络;

三、图片上传下载步骤:

(1)创建RequestQueue对象,用于发送请求的请求队列;同时创建ImageLoader对象和ImageRequest对象,用于打包下载和上传的图片;

(2)在下载图片时有三种方式:

  (2-1)图片请求方式(与文本请求类似):

    1)初始化ImageRequest类的图片请求对象,传入六个参数:

参数1:图片下载路径;

参数2:Response类的静态监听Listener<Bitmap>实例化对象,重写onResponse()传入Bitmap对象作为得到的图像;

参数3:图片宽度大小,正常为100;

参数4:图片高度大小,正常为100;

参数5:图片色度方式,Bitmap.Config.RGB_565;

参数6:Response类的静态监听ErrorListener实例化对象,重写onErrorResponse(),当请求图片错误时调用此方法;

2)将图片请求对象放入请求队列;RequestQueue对象调用add(),传入ImageRequest对象;

  (4-2)图片加载方式:

    1)创建ImageLoader类的图片加载对象,可以设置图片缓存;传入两个参数:

      参数1:请求队列RequestQueue对象;

      参数2:实现继承ImageLoader.ImageCache的自定义图片缓存类;

2)自定义图片缓存类继承ImageLoader.ImageCache中,定义一个属性两个方法:

  属性:图片缓存大小:首先确定图片缓存大小,获取系统运行内存,Runtime.getRuntime().maxMemory()/1024/1024/8 获取当前系统运行内存的1/8作为图片缓存;之后创建LruCache<String, Bitmap>对象,传入图片缓存大小确定即可;

重写getBitmap(String url),在获得图片时调用此方法,返回LruCach对象调用get()传入url的Bitmap对象;

重写putBitmap(String url, Bitmap bitmap),在加载图片时调用此方法,LruCache对象调用put()传入url下载路径和bitmap图片即可;

    3)创建ImageLoader.ImageListener单例,ImageListener调用静态方法getImageListener(),传入三个参数:

参数1:图片要显示的控件;

参数2:加载图片前的显示图像资源Id;

参数3:加载图片失败后显示图像资源Id;

    4)Loader对象调用get()开启下载,传入图片下载路径和ImageListener对象两个参数;

  (4-3)使用网络图片控件方式NetworkImageView:

    1)初始化NetworkImageView控件;

    2)创建ImageLoader类的图片加载对象,可以设置图片缓存;
    3)NetworkImageView对象调用setDefaultImageResId()设置加载前的图片资源Id;

    4)NetworkImageView对象调用setErrorImageViewResId()设置加载失败时的图片资源Id;

    5)NetworkImageView对象调用setImageUrl()传入两个参数,设置加载图片;

参数1:图片下载路径;

参数2:ImageLoader对象;

Android高级_第三方下载工具Volley的更多相关文章

  1. Android高级_第三方框架Xutils

    xutils的功能主要包括有四个部分:(1)布局视图关联:(2)图片下载与缓存:(3)网络请求:(4)数据库: 1. 使用xutils进行视图注入: (1)在控件声明上方添加@ViewInject() ...

  2. 用第三方下载工具下载官方XCode独立安装包的方法

    用第三方下载工具下载官方XCode独立安装包的方法 下载步骤 下载 aria2 工具配置好并启动 (利用其支持配置Cookie并多线程下载的功能.而迅雷则不支持设置Cookie,所以不支持这种需要登录 ...

  3. Android应用开发:网络工具——Volley(二)

    引言 在Android应用开发:网络工具--Volley(一)中结合Cloudant服务介绍了Volley的一般使用方法.当中包括了两种请求类型StringRequest和JsonObjectRequ ...

  4. Android应用开发:网络工具——Volley(一)

    引言 网络一直是我个人的盲点,前一阵子抽空学习了一下Volley网络工具的用法,也透过源代码进行了进一步的学习,有一些心得想分享出来.在Android开发中,成熟的网络工具不少,Android自带了H ...

  5. 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统

    #!/bin/bash ######################################################################################## ...

  6. Android高级_视频播放控件

    一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用p ...

  7. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  8. 巧用第三方高速开发Android App 热门第三方SDK及框架

    巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...

  9. 巧用第三方快速开发Android App 热门第三方SDK及框架

    巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...

随机推荐

  1. 通过DataTrigger绑定Tag属性值进行判断(.net 3.5的环境)

    如下,在UserControl中通过Tag传递不同的值,然后在Style中使用DataTrigger进行判断, <UserControl Style="{DynamicResource ...

  2. Linux 一次杀死多进程

    .- | 说明: “grep firefox”的输出结果是,所有含有关键字“firefox”的进程. “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程. “-”是截取输入行 ...

  3. Apache 源码安装

    8.20]# make[root@yahoo pcre-8.20]# make install 二.安装apache1.下载httpd-2.4.3.tar.gz,地址是:http://httpd.ap ...

  4. [Node.js] 3、搭建hexo博客

      一.安装新版本的nodejs和npm 安装n模块: npm install -g n 升级node.js到最新稳定版 n stable   二.安装hexo note: 参考github,不要去其 ...

  5. FIND_IN_SET()函数

    今天在做项目时,看到了一个从没见过的MySQL函数——FIND_IN_SET(),顿时就产生了浓郁的兴趣,然后就搜了搜,翻了翻. 语法:FIND_IN_SET(str,strlist) 定义: 1. ...

  6. 浅析Java源码之Math.random()

    从零自学java消遣一下,看书有点脑阔疼,不如看看源码!(๑╹◡╹)ノ""" ​ JS中Math调用的都是本地方法,底层全是用C++写的,所以完全无法观察实现过程,Jav ...

  7. [转][MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    本文转自:https://blog.csdn.net/dingxiaowei2013/article/details/29405687 继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下 ...

  8. 怎么在XY图表中添加注解(LightningChart控件为例)?

    场景: 折线图上有多个信号,每个信号都需要显示在自己的Y轴上.如何在屏幕的右侧显示每个信号的基本统计值?这里有为每个信号计算基本数据: 最小值,最大值,平均值. | |Signal 3........ ...

  9. EF访问数据库报“ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。”错误

    我发生这个问题的原因是因为我用EF访问数据库时用的用到了两用方式,如下图 第一种方式访问时不会出现此错误,出现错误的是第二种方式,下图是dal层代码 其中红框中的代码是出现错误之后改正的代码,也就是说 ...

  10. eclipse .properties插件

    资源文件 即 .properties 文件是常用于国际化: eclipse默认的 .properties 文件编辑器有几个问题: 编码问题 多种语言同步问题 下面介绍2种eclipse的 .prope ...