图片加载框架之 ImageLoader

1_特点
1)多线程下载图片,图片可以来源于网络,文件系统,项目文件夹 assets 中以及 drawable
中等
2)支持随意的配置 ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓
存策略,图片显示选项以及其他的一些配置
3)支持图片的内存缓存,文件系统缓存或者 SD 卡缓存
4)支持图片下载过程的监听
5)根据控件(ImageView)的大小对 Bitmap 进行裁剪,减少 Bitmap 占用过多的内存
6)较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在
ListView,GridView 中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7)提供在较慢的网络下对图片进行加载
2_下载地址
https://github.com/nostra13/Android-Universal-Image-Loader
3_使用步骤
1)导入 universal-image-loader-1.9.5.jar 到项目中
2)创建 MyApplication 继承 Application,在 oncreate()中初始化 ImageLoader
(1)初始化 ImageLoaderConfiguration

// 初始化参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2) // 线程优级 .denyCacheImageMultipleSizesInMemory() // 当同一个 Uri 获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同 图片 .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存 的时候的 URI 名称用 MD5 .tasksProcessingOrder(QueueProcessingType.LIFO) // 设置图 片下载和显示的工作队列排序 .writeDebugLogs() // 打印 debug log .build();

(2)ImageLoader 全局配置
// 全局初始化此配置 ImageLoader.getInstance().init(config);

【图片加载框架之 ImageLoader】
(3)完整代码
public class MyApplication extends Application {@Override public void onCreate() { super.onCreate(); initImageLoader(this); }// 初始化 imageloader private void initImageLoader(Context context) { // 初始化参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2) // 线程优先级 .denyCacheImageMultipleSizesInMemory() // 当同一个 Uri 获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的 大小的相同图片 .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的 URI 名称用 MD5 .tasksProcessingOrder(QueueProcessingType.LIFO) // 设置图片下载和显示的工作队列排序 .writeDebugLogs() // 打 印 debug log build(); } }

3)将创建的 MyApplication 在 AndroidManifest.xml 中注册
图片加载框架之 ImageLoader
文章图片

4)在 AndroidManifest.xml 中添加联网权限和写 sdk 权限

5)初始化 DisplayImageOptions
DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.ic_stub) // 设置图片下载期间显示 的图片 .showImageForEmptyUri(R.drawable.ic_empty) // 设置图片 Uri 为空或 是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_error) // 设置图片加载或解码过 程中发生错误显示的图片 .cacheInMemory(true) // 设置下载的图片是否缓 存在内存中 .cacheOnDisk(true) // 设置下载的图片是否缓存 在 SD 卡中 .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片 .build();

6)获取 ImageLoader 实例
private ImageLoader imageLoader = ImageLoader.getInstance();

7)显示加载的图片
// 参数 1:图片 url; 参数 2:显示图片的控件; 参数 3:显示图片的设置; 参数 4:监听器 imageLoader.displayImage(Constants.IMAGES[position], holder.image, options, mFirstLoadImageListener);


转载于:https://www.cnblogs.com/yanglanwan/p/11299306.html

    推荐阅读