http://blog.csdn.net/king_is_everyone/article/details/34107081

最近跟同学们做了一个创业项目,其实跟以前做项目不同,以前大多数都是做web网站,对内存管理这些不太关注,因为是pc机,做android的话也就是一些小列子,现在到了做产品阶段吧,只能把项目做到最优。不扯了,先来说这个框架是做什么的,Android-Universal-Image-Loader主要是一个图片的缓存框架,根据官方解释就是,它提供了一个异步处理图片的方案。它提供两种获取图片方式async or sync,并且提供了一个可定制化的组件(thread executors, downloader, decoder, memory and disk cache, display image options, etc),它会把图片首先缓存到本地,然后在从本地进行读取这些图片,

这是官方使用的效果图

先来说说怎么使用它:首先在github上面下载Android-Universal-Image-Loader,加入到你的android项目里面,然后记得一定要加上这两个权限,否则这个缓存框架是不能够使用的

  1. <manifest>
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <!-- Include next permission if you want to allow UIL to cache images on SD card -->
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  5. ...
  6. <application android:name="MyApplication">
  7. ...
  8. </application>
  9. </manifest>

然后在代码里对该缓存框架进行配置,之所以说它是一个很灵活的东西,是因为它里面的大多数参数都可以手动配置,组件通用化程度高,几乎不需要进行复写。

这是我大概根据官方文档翻译的一些配置,其实对于大家来说,用默认的即可,除非是有特殊要求。



先开始使用的第一步:

配置ImageLoaderConfiguration这个类实现全局ImageLoader

  1. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
  2. activity)
  3. .memoryCacheExtraOptions(640, 480)
  4. // 保存每个缓存图片的最大长和宽
  5. .threadPoolSize(3)
  6. // 线程池的大小 这个其实默认就是3
  7. .memoryCacheSize(2 * 1024)
  8. // 设置缓存的最大字节
  9. .denyCacheImageMultipleSizesInMemory()
  10. // 缓存显示不同大小的同一张图片
  11. .imageDownloader(
  12. new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout
  13. // s)超时时间
  14. .build();
  15. ImageLoader imageLoader = ImageLoader.getInstance();
  16. imageLoader.init(config);

这是我大概需要的一些参数配置。

第二步

配置一些图片选项

  1. DisplayImageOptions options;
  2. options = new DisplayImageOptions.Builder()
  3. .showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载期间显示的图片
  4. .showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片
  5. .showImageOnFail(R.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片
  6. .cacheInMemory(true)// 设置下载的图片是否缓存在内存中
  7. .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中
  8. .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
  9. .build();

这是大概的一个配置状况,在下一篇会用一个listView的实例来讲解这个框架的具体使用

android图片缓存框架Android-Universal-Image-Loader的更多相关文章

  1. Android图片缓存框架Glide

    Android图片缓存框架Glide Glide是Google提供的一个组件.它具有获取.解码和展示视频剧照.图片.动画等功能.它提供了灵活的API,帮助开发者将Glide应用在几乎任何网络协议栈中. ...

  2. android图片缓存框架Android-Universal-Image-Loader(二)

    http://blog.csdn.net/king_is_everyone/article/details/35595515 这篇打算直接告诉大家怎么用吧,其实这个也不是很难的框架,大致使用过程如下: ...

  3. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  4. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  5. 安卓高级 Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  6. Android图片载入框架最全解析(一),Glide的基本使用方法

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

  7. Android图片缓存之初识Glide(三)

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  8. Android图片缓存之Bitmap详解(一)

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. Bitmap: Bitmap是Android ...

  9. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

随机推荐

  1. 判断奇数,java陷阱

    /** 判断是否为奇数 @author husky / public class IsOdd { public static void main(String[] args) { int demo1 ...

  2. Unable to load configuration. - bean - jar: ....struts2-core-2.1.8.1.jar!/struts-default.xml:47:178

    摘录的异常代码: 2013-12-14 22:42:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error严重: Dis ...

  3. Mac OS X 系统下快速显示隐藏文件的方法(使用Automator创建workflow)

    有的时候需要显系统中的隐藏文件,在 Mac 中不像windows系统那么方便(勾选选项就能够操作),需要在 Terminal 中执行: localhost:~ mx$ defaults write c ...

  4. 关于javascript延迟加载图片

    今天在技术群中,有位童鞋问起了javascript延迟加载图片的问题,我在这就给大家说明下原理和实现方法. 延迟加载是通过自定义属性,把真实的img地址存到自定义属性中,如data-url=”img” ...

  5. js切换换class

    1, js代码 function ntabs(thisObj,Num)            {if(thisObj.className == "active")return;   ...

  6. access_token的获取2

    概述 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存. access_token的存储至少要保留512个字符空间.acces ...

  7. Start Your Django Project in Nginx with uWsgi

    Step 0:Install A,B,C,blabla needed This can be seen in my another article in the blog.click here(una ...

  8. .net 实例化对象

    定义TestClass,在调用的地方 TestClass a; 如果下面有引用 a.Property,VS会报错,而如果 TestClass a = null; 再次调用的话则不会报错. TestCl ...

  9. GNU DAEMON THREAD <1>

    尝试写一个简单的守护进程 /** @File daemon.c * * Build a daemon process for game * */ #include <unistd.h> # ...

  10. BZOJ 1014 火星人prefix

    Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 ...