说到图片框架现在比较成熟的要数picasso和Glide了 但今天要说的是ImageLoader框架 ,这个框架在有些公司仍然在使用。用的比较少而已,但用法都差不多,主要还是为了记录学习
1.导入ImageLoader框架jar包 universal-image-loader-1.9.4-with-sources.jar
2.在应用程序完成初始化操作 Application
public void initImageLoader(Context context) {
// 设置缓存的目录
File cacheDir = StorageUtils.getOwnCacheDirectory(context, SDPATH);
ImageLoaderConfiguration config =new ImageLoaderConfiguration.Builder(
context)
.memoryCacheExtraOptions(480, 800)
// max width, max height,即保存的每个缓存文件的最大长宽
.threadPoolSize(3)
// 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY -2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
// 将保存的时候的URI名称用MD5
// 加密
.memoryCache(new UsingFreqLimitedMemoryCache(2 *1024 *1024))
// You
// can
// pass
// your
// own
// memory
// cache
// implementation/你可以通过自己的内存缓存实现
.memoryCacheSize(2 *1024 *1024)
// 内存缓存的最大值
.diskCacheSize(50 *1024 *1024)
// 50 Mb sd卡(本地)缓存的最大值
.tasksProcessingOrder(QueueProcessingType.LIFO)
// 将内存缓存到内存中
.memoryCache(new WeakMemoryCache())
// 线程池内加载的数量
.defaultDisplayImageOptions(defaultOptions)
// 自定义缓存目录
.discCache(new UnlimitedDiskCache(cacheDir))
.memoryCache(new WeakMemoryCache())
.discCacheSize(50 *1024 *1024)
.discCacheFileCount(100)
// 解决加载图片时java.io.FileNotFoundException:
// eg:http://112.64.173.178/LETU/SJYS_IMG/异常
.imageDownloader(new BaseImageDownloader(context, 10000, 10000))
.writeDebugLogs().build();
// 全局初始化
ImageLoader.getInstance().init(config);
}
public static DisplayImageOptionsdefaultOptions =new DisplayImageOptions.Builder()
// 设置下载的图片是否缓存在内存中
.cacheInMemory(true)
// 设置下载的图片是否缓存在SD卡中
.cacheOnDisc(true)
// 设置图片的解码类型
.bitmapConfig(Bitmap.Config.RGB_565)
// 设置图片的质量(图片以如何的编码方式显示 ),其中,imageScaleType的选择值:
// EXACTLY :图像将完全按比例缩小的目标大小
// EXACTLY_STRETCHED:图片会缩放到目标大小完全
// IN_SAMPLE_INT:图像将被二次采样的整数倍
// IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
// NONE:图片不会调整
.imageScaleType(ImageScaleType.EXACTLY)
.showStubImage(R.drawable.icon_waiting_list)
.showImageForEmptyUri(R.drawable.icon_waiting_list)
.showImageOnFail(R.drawable.icon_waiting_list)
// 载入图片前稍做延时可以提高整体滑动的流畅度
.delayBeforeLoading(100).build();
3.在使用的地方使用就可以了 跟Glide用法一样
ImageLoader.getInstance().displayImage(url, imageView, options) 参数分别是图片资源可以是网络图片也可以是本地
第二个参数是图片控件 第三个是配置图片显示的参数图片大小,是否保存到SD卡等的配置