一.Universal-Image-Loader概述:
Android-Universal-Image-Loader是一个开源的图片加载框架,这个项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。
开源库的特性:
1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
3.支持图片的内存缓存,文件系统缓存或者SD卡缓存
4.支持图片下载过程的监听
5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7.提供在较慢的网络下对图片进行加载
二、使用效果图
设置没有加载出来时的效果:
加载成功后的图片:
在项目里导入jar包后,先要配置ImageLoaderConfiguration,这个是对全局图片缓存还有线程,缓存大小,解析等等进行配置,然后ImageLoader是具体实现下载图片、缓存图片显示图片的执行类,把配置好的ImageLoaderConfiguration传入ImageLoader,完成初始化工作,也就是初始化后才能使用ImageLoader.getInstance().displayImage()加载图片。
ImageLoader的初始化可以在Application中实现:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
initImageLoader1(getApplicationContext());
}
/*
* 自定义配置
*/
public static void initImageLoader(Context context) {
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(
context);
config.threadPoolSize(3);//线程池内加载的数量
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();// 不缓存图片的多种尺寸在内存中
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());// 将保存的时候的URI名称用MD5
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs();// Remove for release app
// 初始化ImageLoader
ImageLoader.getInstance().init(config.build());
}
/*
* 默认的配置,一般没有特殊的要求的时候就使用默认就好了。
*/
public static void initImageLoader1(Context context) {
// 创建默认的ImageLoader配置参数
ImageLoaderConfiguration configuration = ImageLoaderConfiguration
.createDefault(context);
// 初始化ImageLoader
ImageLoader.getInstance().init(configuration);
}
}
在diskCacheFileNameGenerator();这是表示将缓存下来的文件以什么方式命名,有以下两种方式:
1.new Md5FileNameGenerator() //使用MD5对UIL进行加密命名
2.new HashCodeFileNameGenerator()//使用HASHCODE对UIL进行加密命名
<!-- 网络权限和缓存权限 -->
<span style="color:#ff0000;"><uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></span>
<appl