这个也是最近项目中使用到的第三方图片加载框架,在这里也自己总结一下,简单的介绍一些使用的方式。

UIL图片加载框架特点

简介:
  • 项目地址:https://github.com/nostra13/Android-Universal-Image-Loader
  • 异步加载图片或者加载大量图片经常会遇到图片错乱或者OOM等相关问题。UIL图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。
    我们看下该图片加载的三级缓存原理
特点:
   1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置3.支持图片的内存缓存,文件系统缓存或者SD卡缓存4.支持图片下载过程的监听5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片7.提供在较慢的网络下对图片进行加载
  • 当然了哈,主流的图片加载还有其他的几个

    • Picasso
    • Cube ImageLoader
    • Fresco 这个可以看看我的另一篇(Fresco图片加载框架的简单介绍)
    • Glide

UIL图片加载框架使用讲解

第一步,项目引入

ImageLoader Jar包引入项目中:https://github.com/nostra13/Android-Universal-Image-Loader/raw/master/downloads/universal-image-loader-1.9.5.jar
或者是下载这个项目,然后导入到工程中,使用库依赖的方式进行引用,如果还不太懂怎么导入demo和库依赖,可以看下
AndroidStudio导入本地和github项目,以及怎么添加第三方依赖介绍

第二步
配置ImageLoder参数(ImageLoaderConfiguration)ImageLoaderConfiguration configuration = ImageLoaderConfiguration  .createDefault(this);
第三步
初始化ImageLoader  ImageLoader.getInstance()
第四步
displayImage(), loadImage(),loadImageSync()

好了,我们开始加载图片吧。
这个时候,我们需要配置imageloader的参数,也就是在application里面配置,这里我们的application使用的是单例模式:

public class MyApplication extends Application{private static MyApplication instance=null;@Overridepublic void onCreate() {super.onCreate();this.instance=this;initImageLoader(getApplicationContext());}public static MyApplication getInstance(){return instance;}private void initImageLoader(Context context){//cacheDir这里是获取到他默认的本地缓存目录,这StorageUtils是他这个imageloader里面的工具类,默认的缓存目录是包名/cache目录下(当然自己可以改变)File cacheDir = StorageUtils.getCacheDirectory(context);ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context).threadPoolSize(5)//线程池.diskCache(new UnlimitedDiskCache(cacheDir))//内存卡.threadPriority(Thread.NORM_PRIORITY -2)//线程优先级.denyCacheImageMultipleSizesInMemory().memoryCache(new LargestLimitedMemoryCache(2 * 1024 * 1024))//内存缓存.memoryCacheSize(2 * 1024 * 1024)//内存缓存大小.diskCacheSize(50 * 1024 * 1024)//存储卡缓存大小.diskCacheFileCount(100)//存储卡文件个数.memoryCacheSizePercentage(13) // default.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // default.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default//.writeDebugLogs().tasksProcessingOrder(QueueProcessingType.FIFO)  //先进先出.build();ImageLoader.getInstance().init(configuration);}}

接下来,我们就要获取imageloader的实例,和设置DisplayImageOptions的参数,这里我附上一张DisplayImageOptions配置图:

       mImageLoader = ImageLoader.getInstance();mOptions = new DisplayImageOptions.Builder().showImageOnLoading(R.mipmap.ic_launcher)//图片加载的时候显示的默认图.showImageForEmptyUri(R.mipmap.ic_launcher)//图片的地址为空的时候显示的图.showImageOnFail(R.mipmap.ic_launcher)//图片加载失败的时候显示.cacheOnDisk(true)   //设置保存在sdcard中.cacheInMemory(true) //设置保存在内存当中.build();

最后我们就要加载图片了:
加载之前:

加载成功后:
是不是很简单呢,而且配置也是通俗易懂的,不过不幸的是,这个框架,已经停止了更新,不过我相信,这么优秀的开源框架,还是会有很多人记着的。当然了哈,我的项目中用到的也就是加载图片,并没有用到其他的厉害的方法,比如

// Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view
//  which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {@Overridepublic void onLoadingStarted(String imageUri, View view) {//开始加载...}@Overridepublic void onLoadingFailed(String imageUri, View view, FailReason failReason) {//加载失败...}@Overridepublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {//加载完成...}@Overridepublic void onLoadingCancelled(String imageUri, View view) {//加载取消...}
}, new ImageLoadingProgressListener() {@Overridepublic void onProgressUpdate(String imageUri, View view, int current, int total) {//加载百分比...}
});
// Load image, decode it to Bitmap and return Bitmap to callback
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {@Overridepublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {// Do whatever you want with Bitmap}
});
// Load image, decode it to Bitmap and return Bitmap synchronously
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);

好了,想要了解更多的有关Universal-Image-Loader,可以去官网下载下来慢慢研究,这里就不多做解释了哈。

Universal-Image-Loader(UIL)图片加载框架使用简单介绍相关推荐

  1. android uil,Android UIL图片加载框架学习

    单张图片加载模型 单张图片加载模型 图片加载步骤: 根据uri 定位到文件,本地磁盘文件,Assert 文件,res 资源文件,network 网络文件等: 从图片文件中获取流数据到内存,这个过程可以 ...

  2. android uil,Android UIL图片加载框架学习

    单张图片加载模型 单张图片加载模型 图片加载步骤: 根据uri 定位到文件,本地磁盘文件,Assert 文件,res 资源文件,network 网络文件等: 从图片文件中获取流数据到内存,这个过程可以 ...

  3. Android设计一个图片加载框架

    本文不是具体编码去实现一个图片加载的框架,而是从理论上来讲解设计一个图片加载框架的注意事项和涉及的知识点,提供一个思路,或者帮助童鞋们应付面试.目前Android 发展至今优秀的图片加载框架太多,例如 ...

  4. UIL(单例框架)Android-Universal-Image-Loader (图片加载框架)

    对于早期使用的图片加载框架进行回顾,对UIL进行简单总结,学而时习之,不亦说乎? UIL(单例框架) 1.概述 Android-Universal-Image-Loader是一个开源的UI组件程序,该 ...

  5. Android图片加载框架

    这篇文章主要和大家一起动手编写Android图片加载框架,从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,感兴趣的小伙伴们可以参考一下 开发一个简洁而实用的And ...

  6. 图片加载框架对比分析

    glide Google推荐的图片加载库,专注于流畅的滚动. 1.优点  1)使用RGB_565,内存占用比Picasso小一半.  2)图片展示和页面的生命周期一致(对context有类型要求)  ...

  7. 框架学习系列一(图片加载框架)

    图片加载框架 整理常用的图片加载框架 Glide Fresco Volley Picasso Universal Image Loader 1. Glide接入使用 gradle配置 dependen ...

  8. Android Glide图片加载框架(二)源码解析之into()

    文章目录 一.前言 二.源码解析 1.into(ImageView) 2.GlideContext.buildImageViewTarget() 3.RequestBuilder.into(Targe ...

  9. Android高效异步图片加载框架

    概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...

最新文章

  1. 1/10个iPhone Xs = 英伟达最便宜AI计算机,这是唯一的“核弹”?
  2. 探测电磁波就能揪出恶意软件,网友:搁这给电脑把脉呢?
  3. Java NIO(一) Java NIO 概述
  4. html5+css3基础教程收集
  5. struts2中s:select标签的使用
  6. 如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?
  7. C/C++求职宝典21个重点笔记
  8. SpringCloud使用汇总Config
  9. 学51单片机需要专门把C语言学透吗
  10. Way back into love
  11. XAMPP 找不到对象,Error 404
  12. Linux命令学习:Linux中more和less命令以及查找用法
  13. delphi2007安装说明(备忘)
  14. matlab求解普通函数的导数问题(diff函数的用法)
  15. word没有显示endnote_word 未显示EndNote工具条的解决方法
  16. 图片从RGB转换成Lab
  17. iOS 播放视频的基本步骤
  18. pytorch 机器翻译 seq2seq 模型和注意力机制
  19. 磁盘列阵 Raid
  20. Flask模板中可以直接访问的特殊变量和方法

热门文章

  1. Office 办公软件 word Excel PPT(3)
  2. linux中tmount命令,Linux中mount命令起什么作用呢?
  3. 绿坝预装推迟,Linux滤坝启动
  4. 基于google升级版c++代码规范指南
  5. 前后端分离项目,vue+uni-app+php+mysql教室预约小程序系统 开题报告
  6. 工业网站建设,工业制造网站制作方案
  7. 通过PP助手安装软件
  8. 将Excel文件内容拖拽至ExtJs的Panl
  9. TuneUp Utilities 2013 序列号
  10. OSPF拓扑图和路由器类型