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

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.提供在较慢的网络下对图片进行载入

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;
@Override
public 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() {
@Override
public void onLoadingStarted(String imageUri, View view) {
//開始载入
...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
//载入失败
...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
//载入完毕
...
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
//载入取消
...
}
}, new ImageLoadingProgressListener() {
@Override
public 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() {
@Override
public 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图片载入框架最全解析(一),Glide的基本使用方法

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号.扫一扫文章底部的二维码或在微信搜索 郭 ...

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

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

  3. 开源项目Universal Image Loader for Android 说明文档 (1) 简介

     When developing applications for Android, one often facesthe problem of displaying some graphical ...

  4. Android开源库--Universal Image Loader通用图片加载器

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上.   github地址:https://github.com/nostra13/Android-Universal-Image-Loader 介绍 ...

  5. 【Android 进阶】图片载入框架之Glide

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

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

    在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使 ...

  7. Android中Universal Image Loader开源框架的简单使用

    UIL (Universal Image Loader)aims to provide a powerful, flexible and highly customizable instrument ...

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

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

  9. Glide Picasso Fresco UIL 图片框架 MD

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

随机推荐

  1. 关于ssh加密方式的理解

    最近公司服务器被挖矿,所以更换了ssh的连接方式,从之前的密码登陆更换为密钥登陆方式,且禁止了密码登陆.所以在配置这个密钥的过程中,顺带了解了些ssh的原理和相关知识.通用的开源 1.ssh是什么,为 ...

  2. 免费获取Bootstrap模板的方法

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,其中中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮.功能完备的网站. 最近通过了Bootstrap中文网学习了其 ...

  3. 洛谷P1208 [USACO1.3]混合牛奶 Mixing Milk(贪心)

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  4. css3实现3D切割轮播图案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 自定义安装MS Office Project2007会出错

    作者:朱金灿 来源:http://blog.csdn.net/clever101 今天使用虚拟光驱文件自定义安装MSOffice Project2007,如下图: 然后总是出现一个错误: 从网上找来一 ...

  6. python3爬虫:下载网易云音乐排行榜

    #!/usr/bin/python3# -*- encoding:utf-8 -*- # 网易云音乐批量下载 import requestsimport urllib # 榜单歌曲批量下载# r = ...

  7. 【Oracle】闪回技术

    1.闪回技术描述 2.数据库的准备: --undo表空间要设置成AUTO,设置合适的保存时间.undo表空间: SYS@ENMOEDU> show parameter undo NAME TYP ...

  8. mach-o格式分析

    0x00 摘要 人生无根蒂,飘如陌上尘. 分散逐风转,此已非常身. — 陶渊明 <杂诗> mach-o格式是OS X系统上的可执行文件格式,类似于windows的PE与linux的ELF, ...

  9. 提示 npm update check failed

    执行npm命令时出现以下提示 虽然不影响代码运行,但总觉得看了很碍事, 查找资料后发现是因为文件夹权限的问题, .config / configstore文件夹中包含一个文件:update-notif ...

  10. linux中errno使用(转)

    当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少 ...