Android高级_第三方下载工具Volley
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的更多相关文章
- Android高级_第三方框架Xutils
xutils的功能主要包括有四个部分:(1)布局视图关联:(2)图片下载与缓存:(3)网络请求:(4)数据库: 1. 使用xutils进行视图注入: (1)在控件声明上方添加@ViewInject() ...
- 用第三方下载工具下载官方XCode独立安装包的方法
用第三方下载工具下载官方XCode独立安装包的方法 下载步骤 下载 aria2 工具配置好并启动 (利用其支持配置Cookie并多线程下载的功能.而迅雷则不支持设置Cookie,所以不支持这种需要登录 ...
- Android应用开发:网络工具——Volley(二)
引言 在Android应用开发:网络工具--Volley(一)中结合Cloudant服务介绍了Volley的一般使用方法.当中包括了两种请求类型StringRequest和JsonObjectRequ ...
- Android应用开发:网络工具——Volley(一)
引言 网络一直是我个人的盲点,前一阵子抽空学习了一下Volley网络工具的用法,也透过源代码进行了进一步的学习,有一些心得想分享出来.在Android开发中,成熟的网络工具不少,Android自带了H ...
- 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统
#!/bin/bash ######################################################################################## ...
- Android高级_视频播放控件
一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用p ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- 巧用第三方高速开发Android App 热门第三方SDK及框架
巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...
- 巧用第三方快速开发Android App 热门第三方SDK及框架
巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...
随机推荐
- 【详解】GrantedAuthority(已授予的权限)
前言 这篇是很久之前学习Spring Security整理的博客,发现浏览量都1000多了,一个赞都没有,那说明写得确实不怎么样,哈哈.应该很多初学者对这个接口存在疑问,特别是如果学习这个框架之前还了 ...
- Go常量与运算符
常量的定义 常量的值在编译时就已经确定 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 package main import ( "fmt ...
- redis使用watch秒杀抢购思路
1.使用watch,采用乐观锁 2.不使用悲观锁,因为等待时间非常长,响应慢 3.不使用队列,因为并发量会让队列内存瞬间升高 测试代码: import java.util.concurrent.Exe ...
- 在WPF中实现平滑滚动
WPF实现滚动条还是比较方便的,只要在控件外围加上ScrollViewer即可,但美中不足的是:滚动的时候没有动画效果.在滚动的时候添加过渡动画能给我们的软件增色不少,例如Office 2013的滚动 ...
- 使用VS2013 + EF6 连接Mysql数据库
使用VS2013 + EF6 + .NET4.5 连接Mysql数据库 1.安装插件 在使用Visual Studio 2013添加ADO.NET实体数据模型新建连接时,默认是没有Mysql选项的.此 ...
- [日常] Go语言圣经-并发的非阻塞缓存
1.go test命令是一个按照约定和组织进行测试的程序2.竞争检查器 go run -race 附带一个运行期对共享变量访问工具的test,出现WARNING: DATA RACE 说明有数据竞争3 ...
- 机器人数目-2015决赛Java语言C组第一题
标题:机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中,A类含有:8个轮子,1个传感器B类含有: 6个轮子,3个传感器C类含有:4个轮子,4个传感器 他们一共订购了100套机器人,收到了轮子6 ...
- Android - Dagger2 使用和原理
Dagger2从入门到放弃再到恍然大悟 http://www.jianshu.com/p/cd2c1c9f68d4 http://www.jianshu.com/p/39d1df6c877d http ...
- 记一次Full GC问题的排查
今天看到监控平台显示项目的Full GC次数过多,查看了一下监控曲线,如下图,发现发生的时间点基本上都是在上午十点之后,到下午五点. 分析:考虑到业务形态,开始初步怀疑是访问人数增多引起的虚拟机内存不 ...
- js之展开收缩菜单,用到window.onload ,onclick,
目标效果:点击标签1,如果列表标签的style的display是block,改成none,否则改成block,来达到展开收缩菜单效果 一.准备阶段 html文件 <!DOCTYPE html&g ...