ImageLoader使用詳解
前言:關於ImageLoader的配置,網上有好多配置方案,本文是基於github上ImageLoader的官方引導作爲講解。
github地址 https://github.com/nostra13/Android-Universal-Image-Loader
配置ImageLoader
- 一般我們在使用ImageLoader的時候,需要在應用程序的入口進行它的一個配置,這個配置一般寫到Application裏邊 *
public void initImageLoader() {
// 獲取默認的路徑
File cacheDir = StorageUtils.getCacheDirectory(getApplicationContext());
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
getApplicationContext())
// 設置內存圖片的寬高
.memoryCacheExtraOptions(480, 800)
// default = device screen dimensions
// 緩存到磁盤中的圖片寬高
.diskCacheExtraOptions(480, 800, null)
// .taskExecutor(null)
// .taskExecutorForCachedImages()
.threadPoolSize(3)
// default 線程優先級
.threadPriority(Thread.NORM_PRIORITY - 2)
// default
.tasksProcessingOrder(QueueProcessingType.FIFO)
// // default設置在內存中緩存圖像的多種尺寸
//加載同一URL圖片時,imageView從小變大時,從內存緩存中加載
.denyCacheImageMultipleSizesInMemory()
// 超過設定的緩存大小時,內存緩存的清除機制
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
// 內存的一個大小
.memoryCacheSize(2 * 1024 * 1024)
.memoryCacheSizePercentage(13)
// default 將圖片信息緩存到該路徑下
.diskCache(new UnlimitedDiskCache(cacheDir))
// default 磁盤緩存的大小
.diskCacheSize(50 * 1024 * 1024)
// 磁盤緩存文件的個數
.diskCacheFileCount(100)
//磁盤緩存的文件名的命名方式//一般使用默認值 (獲取文件名稱的hashcode然後轉換成字符串)或MD5 new Md5FileNameGenerator()源文件的名稱同過md5加密後保存
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
// 設置默認的圖片加載
.imageDownloader(
new BaseImageDownloader(getApplicationContext())) // default
// 使用默認的圖片解析器
.imageDecoder(new BaseImageDecoder(true)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs().build();
}
在使用圖片加載的類中去配置這些資源,比如在Activity中進行配置
public void initOptions() {
DisplayImageOptions 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(options)
// .delayBeforeLoading(int delayInMillis)//int
// delayInMillis爲你設置的下載前的延遲時間
// 設置圖片加入緩存前,對bitmap進行設置
// .preProcessor(BitmapProcessor preProcessor)
// 設置圖片在下載前是否重置,復位
.resetViewBeforeLoading(true)
// 是否設置爲圓角,弧度爲多少
.displayer(new RoundedBitmapDisplayer(20))
// 是否圖片加載好後漸入的動畫時間
.displayer(new FadeInBitmapDisplayer(100))
// 構建完成
.build();
}
ImageLoader的使用
ImageLoader.getInstance().displayImage(imageUrl, imageView,options);
// imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控件 , options 代表DisplayImageOptions配置文件
清除緩存的方法
//完全退出程序時,可以不調用
ImageLoader.getInstance().clearDiskCache();//清除磁盤緩存
ImageLoader.getInstance().clearMemoryCache();//清除內存緩存