安卓 图片加载框架ImageLoader

◆ImageLoader

概述

UIL旨在为图像加载,缓存和显示提供强大,灵活和高度可定制的工具。 它提供了大量的配置选项和良好的控制图像加载和缓存过程。

特性:

☆  多线程图像加载(异步或同步);

☆  ImageLoader配置的广泛定制(线程执行器,下载器,解码器,内存和磁盘缓存,显示图像选项等)。

☆  每个显示图像调用的许多自定义选项(存根图像,缓存开关,解码选项,位图处理和显示等);

☆  内存和/或磁盘上的图像缓存(设备的文件系统或SD卡);

☆  监听加载过程(包括下载进度);

支持URI:

"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)

代码部分

项目中使用Universal-Image-Loader:

S1.导入jar包或添加依赖;

    universal-image-loader-1.9.5.jar

    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

S2.添加访问权限:

    <uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

S3.初始化/配置:

    ImageLoaderConfiguration configuration = ImageLoaderConfiguration

                .createDefault(this);

    ImageLoader.getInstance().init(configuration);

主要方法:

// 配置/初始化
File cacheDir = StorageUtils.getCacheDirectory(this);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
	.memoryCacheExtraOptions(480, 800) // default = device screen dimensions 缓存最大图片大小
	.diskCacheExtraOptions(480, 800, null) // 闪存最大图片大小
	.threadPoolSize(3) // default 最大线程数
	.threadPriority(Thread.NORM_PRIORITY - 2) // default 线程优先级
	.tasksProcessingOrder(QueueProcessingType.FIFO) // default 线程处理队列,先进先出
	.denyCacheImageMultipleSizesInMemory()
	.memoryCache(new LruMemoryCache(2 * 1024 * 1024)) // LruMemory
	.memoryCacheSize(2 * 1024 * 1024) // 缓存
	.memoryCacheSizePercentage(13)    // default 缓存比例?
	.diskCache(new UnlimitedDiskCache(cacheDir)) // default 闪存缓存
	.diskCacheSize(50 * 1024 * 1024) // 闪存缓存大小
	.diskCacheFileCount(100) // 闪存缓存图片文件数量
	//                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
	.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default 文件名
	.imageDownloader(new BaseImageDownloader(this)) // default
	.imageDecoder(new BaseImageDecoder(true)) // default
	.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
	.writeDebugLogs() // LOG
	.build();
ImageLoader.getInstance().init(config);
// 加载图片
DisplayImageOptions options = new DisplayImageOptions.Builder()
        .showImageOnLoading(R.drawable.ic_stub) // resource or drawable
        .showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
        .showImageOnFail(R.drawable.ic_error) // resource or drawable
        .resetViewBeforeLoading(false)  // default
        .delayBeforeLoading(1000)
        .cacheInMemory(false) // default
        .cacheOnDisk(false) // default
        .preProcessor(...)
        .postProcessor(...)
        .extraForDownloader(...)
        .considerExifParams(false) // default
        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
        .bitmapConfig(Bitmap.Config.ARGB_8888) // default
        .decodingOptions(...)
        .displayer(new SimpleBitmapDisplayer()) // default
        .handler(new Handler()) // default
        .build();
ImageLoader.getInstance().displayImage(imageUrl, imageView);
ImageLoader.getInstance().displayImage(imageUrl, imageView,options);
ImageLoader.getInstance().displayImage(imageUrl, imageView, options, listener);
new ImageLoadingListener() {
	@Override
	public void onLoadingStarted(String s, View view) {
	}
	
	@Override
	public void onLoadingFailed(String s, View view, FailReason failReason) {
	}
	
	@Override
	public void onLoadingComplete(String s, View view, Bitmap bitmap) {
	}
	
	@Override
	public void onLoadingCancelled(String s, View view) {
	}
})

  

参考:

    nostra13/Android-Universal-Image-Loader github

    WIKI

    博客

    Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置) 详细

    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 参考

posted @ 2017-05-26 00:24  zhen-Android  阅读(9097)  评论(0编辑  收藏  举报