1. imagerloader的主要特性
多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
支持图片的内存缓存,文件系统缓存或者SD卡缓存
支持图片下载过程的监听
根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
提供在较慢的网络下对图片进行加载
支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
支持图片的内存缓存,文件系统缓存或者SD卡缓存
支持图片下载过程的监听
根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
提供在较慢的网络下对图片进行加载
2.使用
(1)参数设置
在Application中进行声明和初始化
File cacheDir = StorageUtils.getCacheDirectory(this);
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCache(new UnlimitedDiscCache(cacheDir))
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)
.memoryCacheSizePercentage(13)
.tasksProcessingOrder(QueueProcessingType.LIFO)
.build();
ImageLoader.getInstance().init(configuration);
详细参数解读// 内存缓存的设置选项 (最大图片宽度,最大图片高度) 默认当前屏幕分辨率
// .memoryCacheExtraOptions(480, 800)
// 硬盘缓存的设置选项 (最大图片宽度,最大图片高度,压缩格式,压缩质量,处理器)
// .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
// 设置自定义加载和显示图片的线程池
// .taskExecutor(DefaultConfigurationFactory.createExecutor(3,Thread.NORM_PRIORITY
// - 1, QueueProcessingType.FIFO))
// 设置自定义加载和显示内存缓存或者硬盘缓存图片的线程池
// .taskExecutorForCachedImages(DefaultConfigurationFactory.createExecutor(3,Thread.NORM_PRIORITY
// - 1, QueueProcessingType.FIFO))
// 设置显示图片线程池大小,默认为3
// 注:如果设置了taskExecutor或者taskExecutorForCachedImages 此设置无效
// .threadPoolSize(3)
// 设置图片加载线程的优先级,默认为Thread.NORM_PRIORITY-1
// 注:如果设置了taskExecutor或者taskExecutorForCachedImages 此设置无效
// .threadPriority(Thread.NORM_PRIORITY - 1)
// 设置图片加载和显示队列处理的类型 默认为QueueProcessingType.FIFO
// 注:如果设置了taskExecutor或者taskExecutorForCachedImages 此设置无效
// .tasksProcessingOrder(QueueProcessingType.FIFO)
// 设置拒绝缓存在内存中一个图片多个大小 默认为允许,(同一个图片URL)根据不同大小的imageview保存不同大小图片
// .denyCacheImageMultipleSizesInMemory()
// 设置内存缓存 默认为一个当前应用可用内存的1/8大小的LruMemoryCache
// .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
// 设置内存缓存的最大大小 默认为一个当前应用可用内存的1/8
// .memoryCacheSize(2 * 1024 * 1024)
// 设置内存缓存最大大小占当前应用可用内存的百分比 默认为一个当前应用可用内存的1/8
// .memoryCacheSizePercentage(13)
// 设置硬盘缓存
// 默认为StorageUtils.getCacheDirectory(getApplicationContext())
// 即/mnt/sdcard/android/data/包名/cache/
// .discCache(new
// UnlimitedDiscCache(StorageUtils.getCacheDirectory(getApplicationContext())))
// 设置硬盘缓存的最大大小
// .discCacheSize(50 * 1024 * 1024)
// 设置硬盘缓存的文件的最多个数
// .discCacheFileCount(100)
// 设置硬盘缓存文件名生成规范
// 默认为new HashCodeFileNameGenerator()
// .discCacheFileNameGenerator(new Md5FileNameGenerator())
// 设置图片下载器
// 默认为 DefaultConfigurationFactory.createBitmapDisplayer()
// .imageDownloader(
// new HttpClientImageDownloader(getApplicationContext(),
// new DefaultHttpClient()))
// 设置图片解码器
// 默认为DefaultConfigurationFactory.createImageDecoder(false)
// .imageDecoder(DefaultConfigurationFactory.createImageDecoder(false))
// 设置默认的图片显示选项
// 默认为DisplayImageOptions.createSimple()
// .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
// 打印DebugLogs
// .writeDebugLogs()
// 建立
// .build();
/**
* DisplayImageOptions所有配置简介
*/
// 设置图片加载时的默认图片
// .showImageOnLoading(R.drawable.ic_chat_def_pic)
// 设置图片加载失败的默认图片
// .showImageOnFail(R.drawable.ic_chat_def_pic_failure)
// 设置图片URI为空时默认图片
// .showImageForEmptyUri(R.drawable.ic_chat_def_pic)
// 设置是否将View在加载前复位
// .resetViewBeforeLoading(false)
// 设置延迟部分时间才开始加载
// 默认为0
// .delayBeforeLoading(100)
// 设置添加到内存缓存
// 默认为false
// .cacheInMemory(true)
// 设置添加到硬盘缓存
// 默认为false
// .cacheOnDisc(true)
// 设置规模类型的解码图像
// 默认为ImageScaleType.IN_SAMPLE_POWER_OF_2
// .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// 设置位图图像解码配置
// 默认为Bitmap.Config.ARGB_8888
// .bitmapConfig(Bitmap.Config.ARGB_8888)
// 设置选项的图像解码
// .decodingOptions(new Options())
// 设置自定义显示器
// 默认为DefaultConfigurationFactory.createBitmapDisplayer()
// .displayer(new FadeInBitmapDisplayer(300))
// 设置自定义的handler
// 默认为new Handler()
// .handler(new Handler())
// 建立
// .build();
(2)权限声明
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(3)调用显示
设置滑动的时候不加载
//第二个是控制是否在滑动过程中暂停加载图片,如果需要暂停传true就行了,第三个参数控制猛的滑动界面的时候图片是否加载
gridView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), true, true));
根据英文单词可以理解
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.loading)
.showImageOnFail(R.drawable.loading)
.showImageOnLoading(R.drawable.loading)
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
ImageLoader.getInstance().displayImage(Constants.PHOTOS[position], imageView, options);
源码:universal-image-loader-使用.rar