首页 理论教育 使用ImageLoader加载图片,让页面更高效

使用ImageLoader加载图片,让页面更高效

时间:2023-06-27 理论教育 版权反馈
【摘要】:可能您认为ImageRequest已经非常好用了,实际上,Volley在请求网络图片方面可以做到的还远远不止这些,ImageLoader就是一个很好的例子。ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest实现的,不过,ImageLoader明显要比Imag-eRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。图9-22 使用ImageLoader对象加载图片另外,Volley也可以从网络获取字符串,例如天气预报的信息,这时使用的对象是StringRequest对象,创建代码如下。

使用ImageLoader加载图片,让页面更高效

可能您认为ImageRequest已经非常好用了,实际上,Volley在请求网络图片方面可以做到的还远远不止这些,ImageLoader就是一个很好的例子。ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest实现的,不过,ImageLoader明显要比Imag-eRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。

由于ImageLoader不是继承自Request,所以它的用法和我们之前学到的内容有所不同,总结起来大致可以分为以下四步。

(1)创建一个RequestQueue对象,和前面方面相同,代码如下。

RequestQueue mQueue-Volley.newRequestQueue(context);

(2)创建一个ImageLoader对象,代码如下。

978-7-111-58810-8-Chapter09-74.jpg

978-7-111-58810-8-Chapter09-75.jpg

ImageLoader的构造函数接收两个参数,第一个参数是RequestQueue对象,第二个参数是一个ImageCache对象,这里我们先创建出一个空的ImageCache的实现即可。

(3)获取一个ImageListener对象,代码如下。

978-7-111-58810-8-Chapter09-76.jpg

ImageLoader的getImageListener()方法能够获取一个ImageListener对象,getImageListener()方法接收三个参数,第一个参数指定用于显示图片的ImageView控件,第二个参数指定加载图片过程中显示的图片,第三个参数指定加载图片失败的情况下显示的图片。

(4)调用ImageLoader的get()方法加载网络上的图片,代码如下。(www.xing528.com)

978-7-111-58810-8-Chapter09-77.jpg

get()方法接收两个参数,第一个参数是图片的URL地址,第二个参数是刚刚获取到的ImageListener对象。

(5)加载结果如图9-22所示。

978-7-111-58810-8-Chapter09-78.jpg

图9-22 使用ImageLoader对象加载图片

另外,Volley也可以从网络获取字符串,例如天气预报的信息,这时使用的对象是StringRequest对象,创建代码如下。

978-7-111-58810-8-Chapter09-79.jpg

978-7-111-58810-8-Chapter09-80.jpg

StringRequest的构造函数需要接收三个参数,第一个参数是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。本例中,目标服务器地址填写的是百度的首页,在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。

其他步骤与加载图片过程相同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈