可能您认为ImageRequest已经非常好用了,实际上,Volley在请求网络图片方面可以做到的还远远不止这些,ImageLoader就是一个很好的例子。ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest实现的,不过,ImageLoader明显要比Imag-eRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。
由于ImageLoader不是继承自Request,所以它的用法和我们之前学到的内容有所不同,总结起来大致可以分为以下四步。
(1)创建一个RequestQueue对象,和前面方面相同,代码如下。
RequestQueue mQueue-Volley.newRequestQueue(context);
(2)创建一个ImageLoader对象,代码如下。
ImageLoader的构造函数接收两个参数,第一个参数是RequestQueue对象,第二个参数是一个ImageCache对象,这里我们先创建出一个空的ImageCache的实现即可。
(3)获取一个ImageListener对象,代码如下。
ImageLoader的getImageListener()方法能够获取一个ImageListener对象,getImageListener()方法接收三个参数,第一个参数指定用于显示图片的ImageView控件,第二个参数指定加载图片过程中显示的图片,第三个参数指定加载图片失败的情况下显示的图片。
(4)调用ImageLoader的get()方法加载网络上的图片,代码如下。(www.xing528.com)
get()方法接收两个参数,第一个参数是图片的URL地址,第二个参数是刚刚获取到的ImageListener对象。
(5)加载结果如图9-22所示。
图9-22 使用ImageLoader对象加载图片
另外,Volley也可以从网络获取字符串,例如天气预报的信息,这时使用的对象是StringRequest对象,创建代码如下。
StringRequest的构造函数需要接收三个参数,第一个参数是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。本例中,目标服务器地址填写的是百度的首页,在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。
其他步骤与加载图片过程相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。