Android-Universal-Image-Loader开源项目的简要说明及使用实例
本文转载于:http://www.cnblogs.com/hsx514/p/3460179.html
一.核心类的说明及相关参数的说明
ImageLoaderConfiguration
1.作用:为ImageLoader提供下载配置
2.构造方法:

- /**
- * ImageLoaderConfiguration 创建的两种方式。
- */
- // 创建默认的ImageLoaderConfiguration
- ImageLoaderConfiguration configuration_0 = ImageLoaderConfiguration
- .createDefault(this);
- // 使用DisplayImageOptions.Builder()创建DisplayImageOptions
- ImageLoaderConfiguration configuration_1 = new ImageLoaderConfiguration.Builder(
- this).threadPriority(Thread.NORM_PRIORITY - 2)
- .denyCacheImageMultipleSizesInMemory()
- .discCacheFileNameGenerator(new Md5FileNameGenerator())
- .tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()
- .build();

3.常用方法:
- /**
- *当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片
- */
- denyCacheImageMultipleSizesInMemory()

- /**
- * 设置本地图片缓存
- * @param discCache
- */
- discCache(DiscCacheAware discCache)
- DiscCacheAware 类型(在com.nostra13.universalimageloader.cache.disc.impl包下能找到如下的类):
- FileCountLimitedDiscCache(File cacheDir, int maxFileCount):设置缓存路径和缓存文件的数量,超过数量后,old将被删除
- FileCountLimitedDiscCache(File cacheDir,FileNameGenerator fileNameGenerator,int maxFileCount):第二个参数是通过图片的url生成的唯一文件名。
- LimitedAgeDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, long maxAge) :第二个参数同上
- LimitedAgeDiscCache(File cacheDir, long maxAge):maxAge为定义的时间,超过时间后,图片将被删除
- TotalSizeLimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, int maxCacheSize) :第二个参数同上
- TotalSizeLimitedDiscCache(File cacheDir, int maxCacheSize) :定义缓存的大小,如超过了,就会删除old图片。
- UnlimitedDiscCache(File cacheDir) :缓存没有限制
- UnlimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator):第二个参数同上


- /**
- * 设置图片保存到本地的参数
- * @param maxImageWidthForDiscCache 保存的最大宽度
- * @param maxImageHeightForDiscCache 保存的最大高度
- * @param compressFormat 保存的压缩格式
- * @param compressQuality 提示压缩的程度,有0-100.想png这种图片无损耗,就不必设置了
- */
- discCacheExtraOptions(int maxImageWidthForDiscCache,
- int maxImageHeightForDiscCache,
- android.graphics.Bitmap.CompressFormat compressFormat,
- int compressQuality)

- /**
- * 设置缓存文件的数量
- * @param maxFileCount 数量
- */
- discCacheFileCount(int maxFileCount)
- /**
- * 设置缓存的大小
- * @param maxCacheSize 大小
- */
- discCacheSize(int maxCacheSize)

- /**
- * 设置缓存文件的名字
- * @param fileNameGenerator
- */
- discCacheFileNameGenerator(FileNameGenerator fileNameGenerator)
- fileNameGenerator:
- HashCodeFileNameGenerator() :通过HashCode将url生成文件的唯一名字
- Md5FileNameGenerator():通过Md5将url生产文件的唯一名字

- /**
- * 启动Log信息记录,用于查看异常信息
- */
- enableLogging()
- /**
- * 设置缓存信息
- * @param maxImageWidthForMemoryCache 缓存图片的最大宽度,默认为手机的屏幕宽度
- * @param maxImageHeightForMemoryCache 缓存图片的最大高度,默认为手机的屏幕宽度
- */
- memoryCacheExtraOptions(int maxImageWidthForMemoryCache, int maxImageHeightForMemoryCache)

- /**
- * 添加个线程池,进行下载
- * @param executor 线程池
- * 如果进行了这个设置,那么threadPoolSize(int),threadPriority(int),tasksProcessingOrder(QueueProcessingType)
- * 将不会起作用
- */
- taskExecutor(Executor executor)

- /**
- * 设置用于显示图片的线程池大小
- * @param threadPoolSize
- */
- threadPoolSize(int threadPoolSize)
- /**
- * 设置线程的优先级
- * @param threadPriority
- */
- threadPriority(int threadPriority)
- /**
- * 设置图片下载和显示的工作队列排序
- * @param tasksProcessingType
- */
- tasksProcessingOrder(QueueProcessingType tasksProcessingType)
- /**
- * 下载缓存图片
- * @param executorForCachedImages
- */
- taskExecutorForCachedImages(Executor executorForCachedImages)
DisplayImageOptions
1.作用:用于设置图片显示的类。
2.构造方法:

- /**
- * DisplayImageOptions 创建的两种方式。
- */
- // 创建默认的DisplayImageOptions
- DisplayImageOptions option_0 = DisplayImageOptions.createSimple();
- // 使用DisplayImageOptions.Builder()创建DisplayImageOptions
- DisplayImageOptions option_1 = new DisplayImageOptions.Builder()
- .showStubImage(R.drawable.ic_launcher)
- .showImageOnFail(R.drawable.ic_error)
- .showImageForEmptyUri(R.drawable.ic_empty).cacheInMemory()
- .cacheOnDisc().displayer(new RoundedBitmapDisplayer(20))
- .build();

3.常用方法:

- //设置图片在下载期间显示的图片
- showStubImage(R.drawable.ic_launcher)
- //设置图片Uri为空或是错误的时候显示的图片
- showImageForEmptyUri(R.drawable.ic_empty)
- //设置图片加载/解码过程中错误时候显示的图片
- showImageOnFail(R.drawable.ic_error)
- //设置图片在下载前是否重置,复位
- resetViewBeforeLoading()
- //设置下载的图片是否缓存在内存中
- cacheInMemory()
- //设置下载的图片是否缓存在SD卡中
- cacheOnDisc()
- //设置图片的解码类型
- bitmapConfig(Bitmap.Config.RGB_565)
- //设置图片的解码配置
- decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)
- //设置图片下载前的延迟
- delayBeforeLoading(int delayInMillis)
- //设置额外的内容给ImageDownloader
- extraForDownloader(Object extra)
- //设置图片加入缓存前,对bitmap进行设置
- preProcessor(BitmapProcessor preProcessor)
- //设置显示前的图片,显示后这个图片一直保留在缓存中
- postProcessor(BitmapProcessor postProcessor)
- //设置图片以如何的编码方式显示
- imageScaleType(ImageScaleType imageScaleType)


- /**
- * 设置图片的显示方式
- * @param displayer
- */
- displayer(BitmapDisplayer displayer)
- displayer:
- RoundedBitmapDisplayer(int roundPixels)设置圆角图片
- FakeBitmapDisplayer()这个类什么都没做
- FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
- SimpleBitmapDisplayer()正常显示一张图片


- /**
- * 图片的缩放方式
- * @param imageScaleType
- */
- imageScaleType(ImageScaleType imageScaleType)
- imageScaleType:
- EXACTLY :图像将完全按比例缩小的目标大小
- EXACTLY_STRETCHED:图片会缩放到目标大小完全
- IN_SAMPLE_INT:图像将被二次采样的整数倍
- IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
- NONE:图片不会调整

二.简要使用的示例
MyApplication

- package com.ryantang.rtimageloader;
- import android.app.Application;
- import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
- import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
- /**
- * 初始化ImageLoaderConfiguration
- *
- * @author hsx
- * @time 2013-12-5下午05:38:43
- */
- public class MyApplication extends Application {
- @Override
- public void onCreate() {
- super.onCreate();
- // This configuration tuning is custom. You can tune every option, you may tune some of them,
- // or you can create default configuration by
- // ImageLoaderConfiguration.createDefault(this);
- // method.
- ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
- .threadPriority(Thread.NORM_PRIORITY - 2)//设置线程的优先级
- .denyCacheImageMultipleSizesInMemory()//当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片
- .discCacheFileNameGenerator(new Md5FileNameGenerator())//设置缓存文件的名字
- .discCacheFileCount(60)//缓存文件的最大个数
- .tasksProcessingOrder(QueueProcessingType.LIFO)// 设置图片下载和显示的工作队列排序
- .enableLogging() //是否打印日志用于检查错误
- .build();
- //Initialize ImageLoader with configuration
- ImageLoader.getInstance().init(config);
- }
- }

AnimateFirstDisplayListener

- package com.ryantang.rtimageloader.listener;
- import java.util.Collections;
- import java.util.LinkedList;
- import java.util.List;
- import android.graphics.Bitmap;
- import android.view.View;
- import android.widget.ImageView;
- import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
- import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
- public class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
- public static List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
- @Override
- public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
- if (loadedImage != null) {
- ImageView imageView = (ImageView) view;
- boolean firstDisplay = !displayedImages.contains(imageUri);
- if (firstDisplay) {
- FadeInBitmapDisplayer.animate(imageView, 500);
- displayedImages.add(imageUri);
- }
- }
- }
- }

ItemAdapter

- package com.ryantang.rtimageloader.adapter;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.nostra13.universalimageloader.core.DisplayImageOptions;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
- import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
- import com.ryantang.rtimageloader.R;
- import com.ryantang.rtimageloader.listener.AnimateFirstDisplayListener;
- public class ItemAdapter extends BaseAdapter {
- DisplayImageOptions options;
- private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
- String[] imageUrls;
- Context context;
- public ItemAdapter(String[] imageUrls, Context context) {
- super();
- this.imageUrls = imageUrls;
- this.context = context;
- options = new DisplayImageOptions.Builder()
- .showStubImage(R.drawable.ic_launcher)//设置图片在下载期间显示的图片
- .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
- .showImageOnFail(R.drawable.ic_launcher)//设置图片加载/解码过程中错误时候显示的图片
- .cacheInMemory(true)//是否緩存都內存中
- .cacheOnDisc(true)//是否緩存到sd卡上
- .displayer(new RoundedBitmapDisplayer(20))
- .build();
- }
- private class ViewHolder {
- public TextView text;
- public ImageView image;
- }
- @Override
- public int getCount() {
- return imageUrls.length;
- }
- @Override
- public Object getItem(int position) {
- return position;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- final ViewHolder holder;
- if (convertView == null) {
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- convertView = inflater.inflate(R.layout.item_list_image, parent, false);
- holder = new ViewHolder();
- holder.text = (TextView) convertView.findViewById(R.id.text);
- holder.image = (ImageView) convertView.findViewById(R.id.image);
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- holder.text.setText("Item " + (position + 1));
- // ImageLoader
- ImageLoader imageLoader = ImageLoader.getInstance();
- imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);
- return convertView;
- }
- }

Android-Universal-Image-Loader开源项目的简要说明及使用实例的更多相关文章
- android universal image loader 缓冲原理详解
1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL ...
- Android二维码开源项目zxing用例简化和生成二维码、条形码
上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...
- Android Hawk数据库 github开源项目
Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库 . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...
- Android中Universal Image Loader开源框架的简单使用
UIL (Universal Image Loader)aims to provide a powerful, flexible and highly customizable instrument ...
- Android笔记——导入Github开源项目CircleRefreshLayout
百度n久都找不到android studio导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了 ---------------------------------------- ...
- Android开发UI之开源项目第一篇——个性化控件(View)篇
原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...
- Android非常实用的开源项目框架
我将文章中所描述的项目都集成在一个apk中,可以直接运行查看效果,2.2以上的机器都可以运行.因为不让直接上传apk文件,我压缩成了zip包 1. Universal-Image-Loader 实现异 ...
- android最火的开源项目
原文地址:http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale 此前,CSDN移动频道推 ...
- 推荐内置android控件的开源项目alcinoe
开源地址:https://github.com/Zeus64/alcinoe 该控件包,含以下几个控件: 1.基于OpenGL实现的视频播放器 ALVideoPlayer. ALVideoPlayer ...
随机推荐
- [C/C++]C++标准
本文若如特别说明都引于ISO/IEC 14882:2011 7.声明(Declarations) 声明序列(declaration-seq): 声明(declaration) 声明序列(d ...
- stm32定义GPIO口方向和操作的代码
#include "stm32f10x.h" #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+(( ...
- mahout中kmeans算法和Canopy算法实现原理
本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...
- ASP.NET之Ajax系列(一)
我们在Web开发中经常会接触到Ajax技术,同时Ajax技术也有很多种实现方式,那么,我们今天从第一种方式说起:ASP.NET原生控件实现Ajax. ASP.NET原生控件用于Ajax技术的主要是Up ...
- jqGrid详解及高级应用(十四)
一:jqGrid 是一个用来显示网格数据的jQuery插件,文档比较全面,附带中文版本. 二:官方主页http://www.jqgrid.com/目前最新版本:jqGrid 3.7 Beta在线文档 ...
- Android的切图标准
最近总是有人在问我,Android怎么切图啊,怎么适配啊,不只是Android同行,还有很多新手ui设计师. 于是我就写篇文章,根据我们平时的开发经验,简单的介绍一下吧. 如果UI设计师以1920*1 ...
- Intent的简介以及属性详解
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...
- OC中修饰符:宏define 常量:const extern
const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...
- Redis - set类型操作
set类型操作 设置操作:sadd: sadd key value 给指定的key添加元素,重复返回0表示添加失败. srem: srem key valu ...
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...