Android-Universal-Image-Loader是Android是用的比较多的一款开源的图片下载库,先看看GitHub上的介绍。
资源类型:
"http://site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)
常用方法:
// Get singleton instance
ImageLoader imageLoader = ImageLoader.getInstance();
//在imageView显示资源中的图片
imageLoader.displayImage(imageUri, imageView);
//下载资源中的图片
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
//异步下载资源
Bitmap bmp = imageLoader.loadImageSync(imageUri);
//监听下载进度
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
...
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
...
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
...
}
});
//下载图片后转化为指定宽高
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
//异步下载
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);
//缓存相关的方法
DiskCacheUtils.findInCache(String imageUri, DiskCache diskCache)
DiskCacheUtils.removeFromCache(String imageUri, DiskCache diskCache)
工作流程:
常用配置:
全局初始化此配置项
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(context)
//线程池内加载的数量
.threadPoolSize(3)
.threadPriority(Thread.NORM_PRIORITY - 2)
.tasksProcessingOrder(QueueProcessingType.LIFO)
//同一张图片不同大小内存只缓存一张
.denyCacheImageMultipleSizesInMemory()
//内存缓存的实现memory.impl包中提供多种实现方式
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)
//内存缓存文件的最大长宽
.memoryCacheExtraOptions(480, 800)
//缓存的文件数量
.discCacheFileCount(100)
.discCacheSize(50 * 1024 * 1024)
//文件缓存的文件名生成方式
.discCacheFileNameGenerator(new Md5FileNameGenerator())
//文件缓存路径
.discCache(new UnlimitedDiscCache(cacheDir))
//默认的Image显示配置
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
//设置下载器 connectTimeout (5 s),readTimeout (30 s)超时时间
.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000))
//仅测环境可配置
.writeDebugLogs()
.build();//开始构建
ImageLoader.getInstance().init(config);
文件缓存的目录可以通过ImageLoader的StorageUtils获取
File cacheDir = StorageUtils.getOwnCacheDirectory(argContext, "ImgCache");
以上配置都有默认配置:
ImageLoaderConfiguration.ImageLoaderConfiguration.createDefault()
imageLoader显示图片配置项
DisplayImageOptions options;
options = new DisplayImageOptions.Builder()
//设置图片在下载期间显示的图片
.showImageOnLoading(R.drawable.ic_launcher)
//设置图片Uri为空或是错误的时候显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)
//设置图片加载/解码过程中错误时候显示的图片
.showImageOnFail(R.drawable.ic_launcher)
//设置下载的图片是否缓存在内存中
.cacheInMemory(true)
//设置下载的图片是否缓存在SD卡中
.cacheOnDisc(true)
//是否考虑JPEG图像EXIF参数(旋转,翻转)
.considerExifParams(true)
//设置图片以如何的编码方式显示
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
//设置图片的解码类型
.bitmapConfig(Bitmap.Config.RGB_565)
//设置图片的解码配置
.decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)
//int delayInMillis为你设置的下载前的延迟时间
.delayBeforeLoading(int delayInMillis)
//设置图片加入缓存前,对bitmap进行设置
//.preProcessor(BitmapProcessor preProcessor)
//设置图片在下载前是否重置,复位
.resetViewBeforeLoading(true)
//是否设置为圆角,弧度为多少
.displayer(new RoundedBitmapDisplayer(20))
//是否图片加载好后渐入的动画时间
.displayer(new FadeInBitmapDisplayer(100))
.build();//构建完成
设置图片的缩放方式
imageScaleType(ImageScaleType imageScaleType)
EXACTLY :图像将完全按比例缩小的目标大小
EXACTLY_STRETCHED:图片会缩放到目标大小完全
IN_SAMPLE_INT:图像将被二次采样的整数倍
IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
NONE:图片不会调整
设置图片的显示效果
displayer(BitmapDisplayer displayer)
RoundedBitmapDisplayer(int roundPixels)设置圆角图片
FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
SimpleBitmapDisplayer()正常显示一张图片
相关推荐
4. **universal-image-loader-1.9.3.jar** 这是Android-Universal-Image-Loader的核心库文件,包含了所有必要的类和方法。开发者只需将这个jar包添加到项目的libs目录下,并在项目中引用,即可开始使用UIL的功能。 ...
**Android-Universal-Image-Loader 图片异步加载库详解** 在Android开发中,图片的加载和显示是一项常见的任务,特别是在处理大量图片或者网络图片时,如何高效、流畅地加载和展示图片至关重要。为此,开发者社区...
**Android-Universal-Image-Loader (UIL) 是一个强大的图片加载、缓存和显示库,专为Android平台设计。这个库被广泛使用,因为它能够高效地处理图片资源,避免内存溢出,同时支持多种加载策略和显示选项。** 在...
通过以上介绍,我们可以看到Android-Universal-Image-Loader是如何帮助开发者高效、安全地处理图片加载问题的。它不仅解决了Android应用中常见的OOM问题,还提供了丰富的定制化选项,使得开发者可以根据项目需求进行...
《Android Universal Image Loader详解:高效异步加载与缓存机制》 在移动应用开发中,尤其是在Android平台上,图片加载和管理是一项重要的任务。高效的图片加载不仅能够提升用户体验,还能优化应用性能,避免内存...
`universal-image-loader-1.9.5.jar` 文件是该库的特定版本,包含所有必要的类和方法,供开发者在项目中引用。只需将此jar包添加到项目的lib目录下,并在代码中引入相关类和方法,即可开始使用Android-Universal-...
Android-Universal-Image-Loader(UIL)是一款广泛应用于Android开发中的图片加载库,它提供了强大的功能,包括异步加载、缓存策略、错误处理以及多种显示选项,使得开发者能够更高效、灵活地处理应用程序中的图像...
《Android-Universal-Image-Loader:高效图片加载与缓存框架解析》 在移动应用开发中,图片加载和缓存是至关重要的环节,特别是在Android平台上,由于设备性能和网络环境的差异,良好的图片管理策略能显著提升用户...
**Android-Universal-Image-Loader** 是一个广泛使用的开源库,专为Android应用程序设计,用于高效、异步地加载和缓存网络、本地存储或资源中的图像。它由俄罗斯开发者Denis Zholos创建,旨在解决Android应用在处理...
总之,`Universal Image Loader`是Android开发中的利器,通过其强大的功能和高度的可定制性,可以帮助开发者高效地处理图片加载和缓存问题,提升用户体验。在实际开发中,结合`UniversalImageLoader`的源代码学习,...
"Android-Universal-Image-Loader"库就是一个强大的解决方案,它专为Android平台设计,用于实现图片的异步加载、缓存和显示,从而提高应用性能并优化用户体验。这个库由Sergey Tarasevich开发,自2011年以来,已经...
**Android-Universal-Image-Loader** 是一个强大的开源库,专为Android应用设计,用于高效、灵活地加载、缓存和显示网络上的图片。这个库由Sergey Tarasevich开发,它解决了Android应用程序在处理大量图片时可能出现...
在`Android-Universal-Image-Loader-master`中,我们可以看到项目的源代码结构,包括核心的`library`模块和示例应用`sample`模块。通过对源码的阅读和分析,开发者可以深入理解其工作原理,进一步优化使用。 五、与...