这个图片异步载入并缓存的类已经被非常多开发人员所使用,是最经常使用的几个开源库之中的一个,主流的应用,随便反编译几个火的项目,都能够见到它的身影。

但是有的人并不知道怎样去使用这库怎样进行配置,网上查到的信息对于刚接触的人来说可能太少了,以下我就把我使用过程中所知道的写了下来,希望能够帮助自己和别人更深入了解这个库的使用和配置。

GITHUB上的下载路径为:https://github.com/nostra13/Android-Universal-Image-Loader ,下载最新的库文件,而且导入到项目的LIB下便能够使用。

该库以及DEMO本地下载链接:, 800) // max width, max height,即保存的每一个缓存文件的最大长宽

  • .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) // Can slow ImageLoader, use it carefully (Better don't use it)/设置缓存的详细信息,最好不要设置这个
  • .threadPoolSize(3)//线程池内载入的数量
  • .threadPriority(Thread.NORM_PRIORITY - 2)
  • .denyCacheImageMultipleSizesInMemory()
  • .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你能够通过自己的内存缓存实现
  • .memoryCacheSize(2 * 1024 * 1024)
  • .discCacheSize(50 * 1024 * 1024)
  • .discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密
  • .tasksProcessingOrder(QueueProcessingType.LIFO)
  • .discCacheFileCount(100) //缓存的文件数量
  • .discCache(new UnlimitedDiscCache(cacheDir))//自己定义缓存路径
  • .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
  • .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
  • .writeDebugLogs() // Remove for release app
  • .build();//開始构建
  • // Initialize ImageLoader with configuration.
  • 以上的配置看个人需求进行选择,不是全部都要进行配置。

    配置好ImageLoaderConfiguration后。调用以下方法来实现初始化:

    1. ImageLoader.getInstance().init(config);//全局初始化此配置

    注:ImageLoaderConfiguration 配置中的.discCacheFileNameGenerator()方法是将缓存下来的文件以什么方式命名

    里面能够调用的方法有  1.new Md5FileNameGenerator() //使用MD5对UIL进行加密命名

    2.new HashCodeFileNameGenerator()//使用HASHCODE对UIL进行加密命名

    二.

    使用ImageLoader进行图片载入的时候,先要实例化ImageLoader,调用以下方法进行实例化。在每一个布局里面都要实例化后再使用。

    1. protected ImageLoader imageLoader = ImageLoader.getInstance();

    之后进行显示的图片的各种格式DisplayImageOptions 的设置:

    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. .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中
    8. .considerExifParams(true)  //是否考虑JPEG图像EXIF參数(旋转,翻转)
    9. .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以怎样的编码方式显示
    10. .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//
    11. .decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//设置图片的解码配置
    12. //.delayBeforeLoading(int delayInMillis)//int delayInMillis为你设置的下载前的延迟时间
    13. //设置图片增加缓存前,对bitmap进行设置
    14. //.preProcessor(BitmapProcessor preProcessor)
    15. .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
    16. .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少
    17. .displayer(new FadeInBitmapDisplayer(100))//是否图片载入好后渐入的动画时间
    18. .build();//构建完毕

    依照你所须要的配置去设置,假设不须要的就能够不做配置。

    注:

    以上配置中的:

    1).imageScaleType(ImageScaleType imageScaleType)  是设置 图片的缩放方式
         缩放类型mageScaleType:

    EXACTLY :图像将全然按比例缩小的目标大小

    EXACTLY_STRETCHED:图片会缩放到目标大小全然

    IN_SAMPLE_INT:图像将被二次採样的整数倍

    IN_SAMPLE_POWER_OF_2:图片将降低2倍。直到下一降低步骤,使图像更小的目标大小

    NONE:图片不会调整
      2).displayer(BitmapDisplayer displayer)   是设置 图片的显示方式

    显示方式displayer:

    RoundedBitmapDisplayer(int
    JavaEE群:  361579846