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

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
或者是下载这个项目,然后导入到project中。使用库依赖的方式进行引用,假设还不太懂怎么导入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();

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

载入成功后:
是不是非常easy呢。并且配置也是通俗易懂的。只是不幸的是,这个框架。已经停止了更新,只是我相信,这么优秀的开源框架,还是会有非常多人记着的。

当然了哈,我的项目中用到的也就是载入图片,并没实用到其它的厉害的方法,比方

// 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,能够去官网下载下来慢慢研究,这里就不多做解释了哈。

转载于:https://www.cnblogs.com/blfbuaa/p/7083627.html

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

  1. 一个方便的图片载入框架——ImageViewEx

    我的博客:http://mrfufufu.github.io/ 一.前言 近期在整理项目中的一些代码,以备即将开展的新项目中使用,刚刚整理到一个图片载入的 lib.用起来很的简单,和 picasso ...

  2. android glide图片框架,【Android 进阶】图片载入框架之Glide(示例代码)

    简单介绍 在泰国举行的谷歌开发人员论坛上,谷歌为我们介绍了一个名叫 Glide 的图片载入库,作者是 bumptech.这个库被广泛的运用在 google 的开源项目中,包含 2014 年 googl ...

  3. (universal Image Loader)UIL 使用 (2)

    系列(universal Image Loader)UIL 使用 (1)   UIL 使用 3 简单介绍了UIL的最基本的使用方法,这次继续老学习UIL的使用 这次只是分析学习一个方法 <spa ...

  4. (universal Image Loader)UIL 使用 (1)

    UIL Github 网址 系类文章:(universal Image Loader)UIL使用(2),UIL使用3 universal image loader 的功能就是加载图片 在as 中 ap ...

  5. Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

    一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sql ...

  6. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法

    universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法 参考文章: (1)universal image loader在listview/ ...

  7. Glide Picasso Fresco UIL 图片框架 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Glide Picasso Fresco UIL 图片框架 缓存 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. Universal-Image-Loader(UIL)图片加载框架使用简单介绍

    这个也是最近项目中使用到的第三方图片加载框架,在这里也自己总结一下,简单的介绍一些使用的方式. UIL图片加载框架特点 简介: 项目地址:https://github.com/nostra13/And ...

最新文章

  1. python3 str is not callable 问题解决
  2. DropDownList联动
  3. 开始一个django项目
  4. C#动态链接库的创建及使用
  5. Java——集合的概述
  6. 使用jdbc执行SQL实现登录查询1-带配置文件和工具类
  7. Offer年薪低于25W全额退款|阿里、腾讯内推快艇《全链路大数据分析工程师》课程招生简章...
  8. 数据库操作php,一个数据库操作PHP类
  9. java 获取工程编码格式_java 获取获取字符串编码格式
  10. ROS,launch学习
  11. 【MATLAB】 分形插值
  12. 密码学40年|重要历史与人物
  13. Linux 制作系统镜像
  14. [SQL]SQL server 常用代码
  15. k20pro刷鸿蒙,红米K20Pro(Redmi K20Pro)一键刷入RECOVERY获取ROOT权限-刷机教程
  16. 毕业设计开发日志,基于ARM的嵌入式人脸识别系统的设计与实现
  17. IEEE Transactions on Industrial Informatics(TII)投稿指导
  18. hashcat跑包小秘诀
  19. 十二经纳干支歌,十二经纳地支歌
  20. ie11不兼容window.createPopup的问题解决

热门文章

  1. Java GUI编程:swing实现上传tiff文件至hdfs功能
  2. Linux报错:Syntax error: “(“ unexpected解决办法
  3. texstudio 使用方法_简单说说LaTex(TexStudio中的使用)
  4. 编译器不识别stm指令_编译器简介
  5. dll文件用什么语言编写_零基础学习markdown标记语言语法,十分简单便捷编写markdown文件...
  6. centos 安装低版本内核_Linux 升级内核
  7. GAD计算机辅助诊断,GAD-2和GAD-7在心血管门诊焦虑筛查中的信度与效度分析
  8. centos7中每天定时备份mysql数据库
  9. redis命令操作(1)
  10. 【通俗解释】余弦相似度