android图片缓存框架Android-Universal-Image-Loader

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的实例来讲解这个框架的具体使用

原文地址:https://www.cnblogs.com/exmyth/p/4503813.html