Universal-Image-Loader可以说是目前使用最广泛的图片开源库之一。在主流的应用中基本都能看到它的身影,它就像个图片加载守护者,默默地守护着图片加载。
Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是为异步图像加载、缓存和显示提供一个可重复使用的仪器。所以,如果程序里需要这个功能的话,不妨尝试用一用。其中已经封装好了一些类和方法,我们可以直接拿来使用,而不用重复去写。其实,写一个这方面的程序是比较麻烦的,要考虑多线程缓存、内存溢出等很多方面的问题。Universal-Image-Loader包含三大组件:DisplayImageOptions、ImageLoader和ImageLoaderConfiguration。
Universal-Image-Loader具有如下功能特性。
(1)多线程异步加载和显示图片(图片来源于网络、SD卡、assets文件夹、drawable文件夹或新增加载视频缩略图)
例如:
(2)支持通过listener监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)。
(3)缓存图片至内存时,可以更加高效地工作。
(4)高度可定制化(可以根据自己的需求进行各种配置,如线程池、图片下载器、内存缓存策略等)。
(5)支持图片的内存缓存、SD卡(文件)缓存。
(6)在网络速度较慢时,可以对图片进行加载并设置下载监听。
下面是实现过程,完整内容参考本章Android Studio项目:Universal_Image_Loader_Ex-ample。
要使用Universal-Image-Loader,需要从网上下载Universal-Image-Loader项目,然后编译成库,Universal-Image-Loader项目的下载地址:https://github.com/nostra13/Android-Univer-sal-Image-Loader,将编译好的universal-image-loader-1.9.5.jar文件复制到项目的libs目录下,然后增加为库,如图9-17所示,这样就可以使用Universal-Image-Loader了。
图9-17 使用Universal-Image-Loader.jar库
Universal-Image-Loader的使用步骤如下。
(1)创建ImageLoader配置参数,代码如下。
当然,也可以自己定制配置,代码如下。
(2)使用配置参数初始化ImageLoader,代码如下。(www.xing528.com)
ImageLoader.getInstance().init(configuration);
(3)加载图片。主要使用ImageLoader的loadImage()和displayImage()方法,这两个方法都是重载的方法,可以根据需要进行选择。
典型的loadImage方法如下。
其中,uri为图片的URL地址,targetImageSize为显示图像的大小,options为显示图像的配置,listener用于图片下载情况的监听,在调用时实现。
实例代码如下。
监听器SimpleImageLoadingListener需要实现回调方法onLoadingComplete(),在此方法中
将loadedImage设置到ImageView上。加载结果如图9-18所示。
图9-18 loadImage()方法加载网络图像
典型的displayImage方法如下。
displayImage(Stringuri,ImageViewimageView,DisplayImageOptions options,)
其中,uri为图片的URL地址,imageView为显示图像的控件,options为显示图像的配置。
实例代码如下。
加载结果如图9-19所示。
图9-19 displayImage()方法加载网络图像
在项目配置文件app/src/AndroidManifest.xml中添加网络权限和写存储器权限,代码如下。
另外,Universal-Image-Loader也可以使用GirdView和ListView加载图片,这样可显示大量的图片,如果希望停止图片的加载且在GridView和ListView停止滑动的时候加载当前界面的图片,也可以使用这个框架来实现,使用方法也很简单,它提供了PauseOnScrollListener这个类来控制ListView和GridView滑动过程中停止加载图片。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。