1.什么是imageloader?我们为什么要用它?
我们在做Android应用的时候,肯定会遇到异步加载图片,或者加载大量图片 的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等,这些问题解决起来一般会比较难,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架。
2.imageloader的优点
1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、缓存图片至内存时,可以更加高效的工作
4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
5、支持图片的内存缓存,SD卡(文件)缓存
6、在网络速度较慢时,还可以对图片进行加载并设置下载监听
7.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
3.使用详解
1.下载 imageloader.jar放入到libs目录下
2.在清单文件中配置权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
3、在应用中配置ImageLoaderConfiguration参数(只能配置一次,如多次配置,则默认第一次的配置参数)
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);//配置ImageLoaderConfiguration参数(只能配置一次,如多次配置,则默认第一次的配置参数)
File cacheDir = StorageUtils.getCacheDirectory(context); //缓存文件夹路径
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.taskExecutor(...)
.taskExecutorForCachedImages(...)
.threadPoolSize(3) // default 线程池内加载的数量
.threadPriority(Thread