ImageLoader 详解
应用情景
- 网络加载大量图片
注意事项
- 1.自定义 application 必须在清单文件只能配置 Application android:name 属性
-
- 因图片等资源在网络中加载,需配置 internet 权限
-
- 因设置本地缓存,会在本地写入内容,需要配置 写SD卡的权限
- 4.一般我们在使用ImageLoader的时候,需要在应用程序的入口进行它的一个配置,这个配置一般写到Application里边
-
- 在Application 和 Activity 中都用了 ImageLoader,在Application中通过 ImageLoader.getInstance().init(ImageLoaderConfiguration config),来初始化 ImageLoader 操作;而在Activity 中通过 ImageLoader.getInstance().displayImage(String url, ImageView iv,DisplayImageOptions options)来设置图片。可以看到共同点:ImageLoader.getInstance(),其后为init()和display()分别执行初始化和展示操作
注意方法
getInstance()
得到ImageLoader的单例。通过双层是否为 null 判断提高性能
init(ImageLoaderConfiguration configuration)
初始化配置参数,参数configuration为ImageLoader的配置信息,包括图片最大尺寸、任务线程池、磁盘缓存、下载器、解码器等等。
实现中会初始化ImageLoaderEngine engine属性,该属性为任务分发器。displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageLoadingListener listener, ImageLoadingProgressListener progressListener)
加载并显示图片或加载并执行回调接口
使用详解__步骤
-
- 导入安装包 universal-image-loader-1.9.3.jar
2.在app 初始化的时候设置 ImageLoaderConfiguration,并初始化 ImageLoader(采用自定义的 Application ,在其里面的 onCreate()方法里面进行处理)
- 2.1 获取 ImageLoaderConfiguration 对象的内部类 Builder
ImageLoaderConfiguration.Builder builder = new Builder(
getApplicationContext()); 2.2 设置相关参数
- builder.threadPoolSize(3);// 设置线程数量
- builder.threadPriority(Thread.NORM_PRIORITY - 2);// 设置线程优先级
- builder.memoryCacheSize(2 * 1024 * 1024);// 设置缓存空间
- builder.memoryCacheExtraOptions(480, 800);// 设置缓存中的图片宽高
- builder.diskCacheSize(50 * 1024 * 1024); // 设置缓存空间 50M (磁盘中)
- builder.diskCache(new UnlimitedDiscCache(new File(path)));// 自定义文件的缓存路径
- String path=Environment.getExternalStorageDirectory().getAbsolutePath()+”…”;
builder.diskCacheFileNameGenerator(new Md5FileNameGenerator());//磁盘缓存的文件名的命名方式
- 一般使用默认值 (获取文件名称的hashcode然后转换成字符串)
或MD5 new Md5FileNameGenerator()源文件的名称同过md5加密后保存
builder.denyCacheImageMultipleSizesInMemory();
- builder.tasksProcessingOrder(QueueProcessingType.LIFO);
加载同一URL图片是,imageView 从小变大 ,从内存缓存中加载
- 2.1 获取 ImageLoaderConfiguration 对象的内部类 Builder
- 2.3 获取ImageLoaderConfiguration 对象
- ImageLoaderConfiguration config = builder.build();
- 2.4 初始化 ImageLoader
- ImageLoader.getInstance().init(config);
- 3.在活动中设置 DisplayImageOptions
- 3.1获取 DisplayImageOptions 对象的内部类 Builder
- DisplayImageOptions.Builder builder=new Builder();
- 3.2 设置使用缓存 在内存中
- builder.cacheInMemory(true);
- 3.3 设置使用缓存在 SD 卡中
- builder.cacheOnDisc(true);
- 3.4 其他设置 非必须 默认图片 在 drawable中进行加载
- 设置图片为空时,默认图片
- builder.showImageForEmptyUri(R.drawable.ic_empty);
- 设置加载失败的默认图片
- builder.showImageOnFail(R.drawable.ic_error);
- 设置正在加载的默认图片
- builder.showImageOnLoading(R.drawable.ic_stub);
- builder设置圆角
- builder.displayer(new RoundedBitmapDisplayer(20));
- 设置图片为空时,默认图片
- 3.5 获取 DisplayImageOptions 对象
- DisplayImageOptions options = builder.build();
- 3.1获取 DisplayImageOptions 对象的内部类 Builder
- 4.展示图片
- 可设置样式 ImageLoader.getInstance().displayImage(String url, ImageView iv,DisplayImageOptions options);
- 默认样式 ImageLoader.getInstance().displayImage(String url, ImageView iv)
- 5.相关配置
- 权限配置
- 访问Intent _
- 写内存卡 __
- application 配置
- 使用自定义的 Application,将默认application设置改为自定义的application,重新配置name,android:name=”com.example.and4_imageloader_demo1.MyApplication”
- 权限配置
ImageLoader 配置介绍
-
- ImageLoaderConfiguration:
是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置
- ImageLoaderConfiguration:
-
- DisplayImageOptions:
用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理
- DisplayImageOptions:
-
- ImageLoader:
是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(…)、loadImage(…),但是其实最终他们的实现都是displayImage(…)
- ImageLoader:
从三者的协作关系上看,他们有点像厨房规定、厨师、客户个人口味之间的关系ImageLoaderConfiguration就像是厨房里面的规定,每一个厨师要怎么着装,要怎么保持厨房的干净,这是针对每一个厨师都适用的规定,而且不允许个性化改变。ImageLoader就像是具体做菜的厨师,负责具体菜谱的制作。DisplayImageOptions就像每个客户的偏好,根据客户是重口味还是清淡,每一个imageLoader根据DisplayImageOptions的要求具体执行
相关概念
- 为Google 为 Android 所做的开源框架
- 下载地址 https://github.com/nostra13/Android-Universal-Image-Loader
- 安装包 universal-image-loader-1.9.3.jar
Android Universal Image Loader 是一个强大的、可高度定制的图片缓存
多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)特点
- 可配置高。支持任务线程池、下载器、解码器、内存和磁盘的缓冲、显示选项等等的配置。 (ImageLoaderConfiguration
-