使用配置:
1 导入工程jar包:
https://github.com/nostra13/Android-Universal-Image-Loader,找到universal-image-loader-1.9.5.jar
2 写入权限:
3 可导入ImageLoaderUtils进行相关参数配置 :http://download.csdn.net/detail/xiaoleiacm/9535639<!-- Include following permission if you load images from Internet --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Include following permission if you want to cache images on SD card --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
ImageLoader相关:
1 初始化ImageLoaderConfiguration
初始化ImageLoaderConfiguration包括内存缓存设置,SD卡缓存设置,以及下载线程相关设置,进行初始化时需要获取屏幕宽高,以及分配给该应用程序的内存大小(总APP内存的八分一)
/**
* 初始化ImageLoaderConfiguration
*/
private void InitImageLoaderConfiguration() {
/**************** 获得屏幕宽高 start **************************/
DisplayMetrics displayMetrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int widthPixels = displayMetrics.widthPixels;
int heightPixels = displayMetrics.heightPixels;
// System.out.println("widthPixels :" + widthPixels + " heightPixels :" + heightPixels);
/*************** 获得屏幕宽高 end ****************************/
/*************** 获取内存缓存的1/8 开始 ************************/
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int cacheSize = maxMemory / 8;
/************** 获取内存缓存的1/8 结束 ************************/
/************设置SD卡缓存储存路径 File Dir 开始 ***********************************/
File cacheDirectory = StorageUtils.getOwnCacheDirectory(mContext, "imageloader/Cache");
System.out.println(cacheDirectory); //storage/emulated/legacy/imageloader/Cache
/************设置SD卡缓存储存路径 File Dir 结束 ***********************************/
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)
/****************************** 内存缓存设置 ****************************/
.memoryCacheExtraOptions(widthPixels, heightPixels) // 屏幕宽高
.memoryCache(new UsingFreqLimitedMemoryCache(cacheSize)) // 可选择不同的内存缓存方式UsingFreqLimitedMemoryCache
.memoryCacheSize(cacheSize)
.denyCacheImageMultipleSizesInMemory() // 拒绝在缓存中缓存多个URL相同的图片
/****************************** 内存缓存设置 ****************************/
/****************************** SD卡缓存设置 ****************************/
.diskCacheExtraOptions(widthPixels, heightPixels, new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
System.out.println("Bitmap :" + bitmap);
return null;
}
}) //储存到SD卡时,对Bitmap进行相应处理,
.diskCache(new UnlimitedDiskCache(cacheDirectory)) //无限制大小缓存 ,同时设置缓存储存路径
.diskCacheSize(50 * 1024 * 1024)// 缓存大小
.diskCacheFileCount(100) //缓存文件数量
.diskCacheFileNameGenerator(new Md5FileNameGenerator()) //对于缓存的图片名进行MD5加密
/****************************** SD卡缓存设置 ****************************/
/****************************** 线程 开始 ****************************/
.threadPoolSize(3)
.threadPoolSize(Thread.NORM_PRIORITY - 2)
.tasksProcessingOrder(QueueProcessingType.LIFO)
/*不需要外部调用,是线程池相关,在ImageLoaderEngine中调用
.taskExecutor()
.taskExecutorForCachedImages()
*/
.defaultDisplayImageOptions(options) // 设置默认图片显示选项 下面的option对象DisplayImageOptions.createSimple()
.imageDownloader(new BaseImageDownloader(mContext, 5 * 1000, 30 * 1000))// connectTimeout (5 s), readTimeout (30 s)超时时间
/****************************** 线程 结束 ****************************/
.build();
ImageLoader.getInstance().init(config);
}
在设置diskCache时 有以下内存缓存可选项: