Android高级_第三方下载工具Volley

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,在该类中重写onResponse(String response),进行收到请求结果后的操作;

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

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

(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实例化对象,重写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对象,传入图片缓存大小确定即可;

重写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对象;

相关新闻

隶书名帖之——《曹全碑》简介及高清图片
365bet足球直播

隶书名帖之——《曹全碑》简介及高清图片

🕒 09-06 👽 9163
一个提手旁一个奈念什么?
365bet足球直播

一个提手旁一个奈念什么?

🕒 10-14 👽 7197
笔记本电脑太卡了怎么办 笔记本电脑太慢的解决方法【详解】
如何自己换平板电池
365体育官网登录

如何自己换平板电池

🕒 09-30 👽 9037
球衣秘密:克罗地亚的红白格子是怎么来的?
帕尼尼球星卡FIFA365

球衣秘密:克罗地亚的红白格子是怎么来的?

🕒 07-26 👽 6356
宝马560报价及图片 宝马525售价38万(分期首付11万)
帕尼尼球星卡FIFA365

宝马560报价及图片 宝马525售价38万(分期首付11万)

🕒 01-17 👽 7713