本文转载于:http://www.cnblogs.com/hsx514/p/3460179.html

一.核心类的说明及相关参数的说明

ImageLoaderConfiguration

1.作用:为ImageLoader提供下载配置

2.构造方法:

  1. /**
  2. * ImageLoaderConfiguration 创建的两种方式。
  3. */
  4. // 创建默认的ImageLoaderConfiguration
  5. ImageLoaderConfiguration configuration_0 = ImageLoaderConfiguration
  6. .createDefault(this);
  7.  
  8. // 使用DisplayImageOptions.Builder()创建DisplayImageOptions
  9. ImageLoaderConfiguration configuration_1 = new ImageLoaderConfiguration.Builder(
  10. this).threadPriority(Thread.NORM_PRIORITY - 2)
  11. .denyCacheImageMultipleSizesInMemory()
  12. .discCacheFileNameGenerator(new Md5FileNameGenerator())
  13. .tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()
  14. .build();

3.常用方法:

  1. /**
  2. *当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片
  3. */
  4. denyCacheImageMultipleSizesInMemory()
  1. /**
  2. * 设置本地图片缓存
  3. * @param discCache
  4. */
  5. discCache(DiscCacheAware discCache)
  1. DiscCacheAware 类型(在com.nostra13.universalimageloader.cache.disc.impl包下能找到如下的类):
  2. FileCountLimitedDiscCache(File cacheDir, int maxFileCount):设置缓存路径和缓存文件的数量,超过数量后,old将被删除
  3. FileCountLimitedDiscCache(File cacheDir,FileNameGenerator fileNameGenerator,int maxFileCount):第二个参数是通过图片的url生成的唯一文件名。
  4. LimitedAgeDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, long maxAge) :第二个参数同上
  5. LimitedAgeDiscCache(File cacheDir, long maxAge):maxAge为定义的时间,超过时间后,图片将被删除
  6. TotalSizeLimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, int maxCacheSize) :第二个参数同上
  7. TotalSizeLimitedDiscCache(File cacheDir, int maxCacheSize) :定义缓存的大小,如超过了,就会删除old图片。
  8. UnlimitedDiscCache(File cacheDir) :缓存没有限制
  9. UnlimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator):第二个参数同上
  1. /**
  2. * 设置图片保存到本地的参数
  3. * @param maxImageWidthForDiscCache 保存的最大宽度
  4. * @param maxImageHeightForDiscCache 保存的最大高度
  5. * @param compressFormat 保存的压缩格式
  6. * @param compressQuality 提示压缩的程度,有0-100.想png这种图片无损耗,就不必设置了
  7. */
  8. discCacheExtraOptions(int maxImageWidthForDiscCache,
  9. int maxImageHeightForDiscCache,
  10. android.graphics.Bitmap.CompressFormat compressFormat,
  11. int compressQuality)
  1. /**
  2. * 设置缓存文件的数量
  3. * @param maxFileCount 数量
  4. */
  5. discCacheFileCount(int maxFileCount)
  1. /**
  2. * 设置缓存的大小
  3. * @param maxCacheSize 大小
  4. */
  5. discCacheSize(int maxCacheSize)
  1. /**
  2. * 设置缓存文件的名字
  3. * @param fileNameGenerator
  4. */
  5. discCacheFileNameGenerator(FileNameGenerator fileNameGenerator)
  6. fileNameGenerator
  7. HashCodeFileNameGenerator() :通过HashCodeurl生成文件的唯一名字
  8. Md5FileNameGenerator():通过Md5url生产文件的唯一名字
  1. /**
  2. * 启动Log信息记录,用于查看异常信息
  3. */
  4. enableLogging()
  1. /**
  2. * 设置缓存信息
  3. * @param maxImageWidthForMemoryCache 缓存图片的最大宽度,默认为手机的屏幕宽度
  4. * @param maxImageHeightForMemoryCache 缓存图片的最大高度,默认为手机的屏幕宽度
  5. */
  6. memoryCacheExtraOptions(int maxImageWidthForMemoryCache, int maxImageHeightForMemoryCache)
  1. /**
  2. * 添加个线程池,进行下载
  3. * @param executor 线程池
  4. * 如果进行了这个设置,那么threadPoolSize(int),threadPriority(int),tasksProcessingOrder(QueueProcessingType)
  5. * 将不会起作用
  6. */
  7. taskExecutor(Executor executor)
  1. /**
  2. * 设置用于显示图片的线程池大小
  3. * @param threadPoolSize
  4. */
  5. threadPoolSize(int threadPoolSize)
  1. /**
  2. * 设置线程的优先级
  3. * @param threadPriority
  4. */
  5. threadPriority(int threadPriority)
  1. /**
  2. * 设置图片下载和显示的工作队列排序
  3. * @param tasksProcessingType
  4. */
  5. tasksProcessingOrder(QueueProcessingType tasksProcessingType)
  1. /**
  2. * 下载缓存图片
  3. * @param executorForCachedImages
  4. */
  5. taskExecutorForCachedImages(Executor executorForCachedImages)

DisplayImageOptions

1.作用:用于设置图片显示的类。

2.构造方法:

  1. /**
  2. * DisplayImageOptions 创建的两种方式。
  3. */
  4. // 创建默认的DisplayImageOptions
  5. DisplayImageOptions option_0 = DisplayImageOptions.createSimple();
  6.  
  7. // 使用DisplayImageOptions.Builder()创建DisplayImageOptions
  8. DisplayImageOptions option_1 = new DisplayImageOptions.Builder()
  9. .showStubImage(R.drawable.ic_launcher)
  10. .showImageOnFail(R.drawable.ic_error)
  11. .showImageForEmptyUri(R.drawable.ic_empty).cacheInMemory()
  12. .cacheOnDisc().displayer(new RoundedBitmapDisplayer(20))
  13. .build();

3.常用方法:

  1. //设置图片在下载期间显示的图片
  2. showStubImage(R.drawable.ic_launcher)
  3.  
  4. //设置图片Uri为空或是错误的时候显示的图片
  5. showImageForEmptyUri(R.drawable.ic_empty)
  6.  
  7. //设置图片加载/解码过程中错误时候显示的图片
  8. showImageOnFail(R.drawable.ic_error)
  9.  
  10. //设置图片在下载前是否重置,复位
  11. resetViewBeforeLoading()
  12.  
  13. //设置下载的图片是否缓存在内存中
  14. cacheInMemory()
  15.  
  16. //设置下载的图片是否缓存在SD卡中
  17. cacheOnDisc()
  18.  
  19. //设置图片的解码类型
  20. bitmapConfig(Bitmap.Config.RGB_565)
  21.  
  22. //设置图片的解码配置
  23. decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)
  24.  
  25. //设置图片下载前的延迟
  26. delayBeforeLoading(int delayInMillis)
  27.  
  28. //设置额外的内容给ImageDownloader
  29. extraForDownloader(Object extra)
  30.  
  31. //设置图片加入缓存前,对bitmap进行设置
  32. preProcessor(BitmapProcessor preProcessor)
  33.  
  34. //设置显示前的图片,显示后这个图片一直保留在缓存中
  35. postProcessor(BitmapProcessor postProcessor)
  36.  
  37. //设置图片以如何的编码方式显示
  38. imageScaleType(ImageScaleType imageScaleType)
  1. /**
  2. * 设置图片的显示方式
  3. * @param displayer
  4. */
  5. displayer(BitmapDisplayer displayer)
  6. displayer
  7. RoundedBitmapDisplayerint roundPixels)设置圆角图片
  8. FakeBitmapDisplayer()这个类什么都没做
  9. FadeInBitmapDisplayerint durationMillis)设置图片渐显的时间
  10.        SimpleBitmapDisplayer()正常显示一张图片
  1. /**
  2. * 图片的缩放方式
  3. * @param imageScaleType
  4. */
  5. imageScaleType(ImageScaleType imageScaleType)
  6. imageScaleType:
  7. EXACTLY :图像将完全按比例缩小的目标大小
  8. EXACTLY_STRETCHED:图片会缩放到目标大小完全
  9. IN_SAMPLE_INT:图像将被二次采样的整数倍
  10. IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
  11. NONE:图片不会调整

二.简要使用的示例

MyApplication
  1. package com.ryantang.rtimageloader;
  2.  
  3. import android.app.Application;
  4.  
  5. import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
  6. import com.nostra13.universalimageloader.core.ImageLoader;
  7. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  8. import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
  9. /**
  10. * 初始化ImageLoaderConfiguration
  11. *
  12. * @author hsx
  13. * @time 2013-12-5下午05:38:43
  14. */
  15. public class MyApplication extends Application {
  16. @Override
  17. public void onCreate() {
  18. super.onCreate();
  19.  
  20. // This configuration tuning is custom. You can tune every option, you may tune some of them,
  21. // or you can create default configuration by
  22. // ImageLoaderConfiguration.createDefault(this);
  23. // method.
  24. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
  25. .threadPriority(Thread.NORM_PRIORITY - 2)//设置线程的优先级
  26. .denyCacheImageMultipleSizesInMemory()//当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片
  27. .discCacheFileNameGenerator(new Md5FileNameGenerator())//设置缓存文件的名字
  28. .discCacheFileCount(60)//缓存文件的最大个数
  29. .tasksProcessingOrder(QueueProcessingType.LIFO)// 设置图片下载和显示的工作队列排序
  30. .enableLogging() //是否打印日志用于检查错误
  31. .build();
  32.  
  33. //Initialize ImageLoader with configuration
  34. ImageLoader.getInstance().init(config);
  35. }
  36. }
AnimateFirstDisplayListener
  1. package com.ryantang.rtimageloader.listener;
  2.  
  3. import java.util.Collections;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6.  
  7. import android.graphics.Bitmap;
  8. import android.view.View;
  9. import android.widget.ImageView;
  10.  
  11. import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
  12. import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
  13.  
  14. public class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
  15.  
  16. public static List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
  17.  
  18. @Override
  19. public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  20. if (loadedImage != null) {
  21. ImageView imageView = (ImageView) view;
  22. boolean firstDisplay = !displayedImages.contains(imageUri);
  23. if (firstDisplay) {
  24. FadeInBitmapDisplayer.animate(imageView, 500);
  25. displayedImages.add(imageUri);
  26. }
  27. }
  28. }
  29. }
ItemAdapter
  1. package com.ryantang.rtimageloader.adapter;
  2.  
  3. import android.content.Context;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  11. import com.nostra13.universalimageloader.core.ImageLoader;
  12. import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
  13. import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
  14. import com.ryantang.rtimageloader.R;
  15. import com.ryantang.rtimageloader.listener.AnimateFirstDisplayListener;
  16.  
  17. public class ItemAdapter extends BaseAdapter {
  18. DisplayImageOptions options;
  19.  
  20. private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
  21.  
  22. String[] imageUrls;
  23. Context context;
  24.  
  25. public ItemAdapter(String[] imageUrls, Context context) {
  26. super();
  27. this.imageUrls = imageUrls;
  28. this.context = context;
  29. options = new DisplayImageOptions.Builder()
  30. .showStubImage(R.drawable.ic_launcher)//设置图片在下载期间显示的图片
  31. .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
  32. .showImageOnFail(R.drawable.ic_launcher)//设置图片加载/解码过程中错误时候显示的图片
  33. .cacheInMemory(true)//是否緩存都內存中
  34. .cacheOnDisc(true)//是否緩存到sd卡上
  35. .displayer(new RoundedBitmapDisplayer(20))
  36. .build();
  37. }
  38.  
  39. private class ViewHolder {
  40. public TextView text;
  41. public ImageView image;
  42. }
  43.  
  44. @Override
  45. public int getCount() {
  46. return imageUrls.length;
  47. }
  48.  
  49. @Override
  50. public Object getItem(int position) {
  51. return position;
  52. }
  53.  
  54. @Override
  55. public long getItemId(int position) {
  56. return position;
  57. }
  58.  
  59. @Override
  60. public View getView(final int position, View convertView, ViewGroup parent) {
  61. final ViewHolder holder;
  62. if (convertView == null) {
  63. LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  64. convertView = inflater.inflate(R.layout.item_list_image, parent, false);
  65. holder = new ViewHolder();
  66. holder.text = (TextView) convertView.findViewById(R.id.text);
  67. holder.image = (ImageView) convertView.findViewById(R.id.image);
  68. convertView.setTag(holder);
  69. } else {
  70. holder = (ViewHolder) convertView.getTag();
  71. }
  72.  
  73. holder.text.setText("Item " + (position + 1));
  74. // ImageLoader
  75. ImageLoader imageLoader = ImageLoader.getInstance();
  76. imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);
  77.  
  78. return convertView;
  79. }
  80. }

Android-Universal-Image-Loader开源项目的简要说明及使用实例的更多相关文章

  1. android universal image loader 缓冲原理详解

    1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL ...

  2. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

  3. Android Hawk数据库 github开源项目

    Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库  . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...

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

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

  5. Android笔记——导入Github开源项目CircleRefreshLayout

    百度n久都找不到android studio导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了  ---------------------------------------- ...

  6. Android开发UI之开源项目第一篇——个性化控件(View)篇

    原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...

  7. Android非常实用的开源项目框架

    我将文章中所描述的项目都集成在一个apk中,可以直接运行查看效果,2.2以上的机器都可以运行.因为不让直接上传apk文件,我压缩成了zip包 1. Universal-Image-Loader 实现异 ...

  8. android最火的开源项目

    原文地址:http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale 此前,CSDN移动频道推 ...

  9. 推荐内置android控件的开源项目alcinoe

    开源地址:https://github.com/Zeus64/alcinoe 该控件包,含以下几个控件: 1.基于OpenGL实现的视频播放器 ALVideoPlayer. ALVideoPlayer ...

随机推荐

  1. [C/C++]C++标准

    本文若如特别说明都引于ISO/IEC 14882:2011 7.声明(Declarations) 声明序列(declaration-seq):    声明(declaration)    声明序列(d ...

  2. stm32定义GPIO口方向和操作的代码

    #include "stm32f10x.h" #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+(( ...

  3. mahout中kmeans算法和Canopy算法实现原理

    本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...

  4. ASP.NET之Ajax系列(一)

    我们在Web开发中经常会接触到Ajax技术,同时Ajax技术也有很多种实现方式,那么,我们今天从第一种方式说起:ASP.NET原生控件实现Ajax. ASP.NET原生控件用于Ajax技术的主要是Up ...

  5. jqGrid详解及高级应用(十四)

    一:jqGrid 是一个用来显示网格数据的jQuery插件,文档比较全面,附带中文版本.  二:官方主页http://www.jqgrid.com/目前最新版本:jqGrid 3.7 Beta在线文档 ...

  6. Android的切图标准

    最近总是有人在问我,Android怎么切图啊,怎么适配啊,不只是Android同行,还有很多新手ui设计师. 于是我就写篇文章,根据我们平时的开发经验,简单的介绍一下吧. 如果UI设计师以1920*1 ...

  7. Intent的简介以及属性详解

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...

  8. OC中修饰符:宏define 常量:const extern

    const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...

  9. Redis - set类型操作

    set类型操作 设置操作:sadd:        sadd key value        给指定的key添加元素,重复返回0表示添加失败. srem:         srem key valu ...

  10. [转]LUA 学习笔记

    Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...