安卓 图片加载框架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
博客