背景
最近換了ImageLoader作爲圖片緩存工具,在使用時,發現這個框架其實可以實現很多圖片處理的功能。在閱讀源碼時也學習到了不少程序設計方面的知識。在實際開發
時,往往自己手中資源很多,很多功能只是自己不瞭解,浪費了大量時間去尋找其他框架。
今天主要總結了一下ImageLoader的一些基本功能及其配置方式,現在總結如下。
常用全局配置總結
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
//設置下載線程的優先級
config.threadPriority(Thread.NORM_PRIORITY - 2);
//同一uri地址的圖片,解壓爲兩種尺寸的Bitmap,是否允許這兩個Bitmap都被緩存
config.denyCacheImageMultipleSizesInMemory();
//硬盤存儲文件名的命名方式
//Md5FileNameGenerator
//HashCodeFileNameGenerator
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
//硬盤空間大小
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
//處理下載和顯示線程的隊列類型 先進先出 先進後出
config.tasksProcessingOrder(QueueProcessingType.FIFO);
//寫錯誤日誌
config.writeDebugLogs(); // Remove for release app
//***********************以下內容可以不進行設置***********************************
//爲所有用到ImageLoader的地方設置下載選項 如果我們需要在不同頁面設置不同種類的圖,
//則在每個頁面中單獨進行設置
// DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder().
// cacheInMemory(true).
// cacheOnDisk(true).
// bitmapConfig(Bitmap.Config.RGB_565).
// imageScaleType(ImageScaleType.IN_SAMPLE_INT).
// build();
// config.defaultDisplayImageOptions(defaultOptions);
//設置硬盤緩存路徑和存儲結構
//UnlimitedDiskCache 無限制存儲 默認存儲 在DefaultConfigurationFactory設置
//LimitedAgeDiskCache 有超時的存儲方式
String catchPath = context.getExternalCacheDir().getPath().toString() + "/image";
config.diskCache(new UnlimitedDiskCache(new File(catchPath)));
//設置內存緩存結構
//FIFOLimitedMemoryCache
//FuzzyKeyMemoryCache
//LargestLimitedMemoryCache
//LimitedAgeMemoryCache
//LRULimitedMemoryCache
//LruMemoryCache 默認緩存
//UsingFreqLimitedMemoryCache
//WeakMemoryCache
config.memoryCache(new LruMemoryCache(1024 * 1024));
//下載器
//BaseImageDownloader 默認
//可以使用OkHttp的底層
config.imageDownloader(new OkHttpImageDownloader(context, new OkHttpClient()));
//設定緩存文件的數量
//config.diskCacheFileCount(0);
//可以設置線程及線程池相關
//可以手動設置加載線程,也可以直接由DefaultConfigurationFractory創建默認
//config.taskExecutor() 下載線程
//config.taskExecutorForCachedImages() 緩存線程
//config.tasksProcessingOrder() 圖片處理線程
//設置解碼器 解碼器用於將圖片解壓成相應的大小
//用到ImageDecodingInfo參數,用於設置解壓的參數
//BaseImageDecoder 默認
//config.imageDecoder();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
下載option配置總結
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub) //加載時的默認圖片
.showImageForEmptyUri(R.drawable.ic_empty) //uri爲空時加載的圖片
.showImageOnFail(R.drawable.ic_error) //網絡錯誤時加載的圖片
.cacheInMemory(true) //是否緩存到內存
.cacheOnDisk(true) //是否緩存到硬盤
.considerExifParams(true) //是否使用Exif信息 (Exif信息可以理解爲JPEG圖中加入相機相關信息)
//添加顯示的圖片形狀
.displayer(new RoundedVignetteBitmapDisplayer(30,10)) //CircleBitmapDisplayer 圓形
//FadeInBitmapDisplayer 逐漸出現
//RoundedBitmapDisplayer 圓邊
//RoundedVignetteBitmapDisplayer 圓邊 與外框有一層陰影
//SimpleBitmapDisplayer 沒變化
//**************************以下選項可以直接默認**********************************
//圖片拉伸模式
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED) //NONE
//NONE_SAFE 如果圖片過大,則縮小,適應外部容器
//IN_SAMPLE_POWER_OF_2 如果圖片過大,隔點採樣,直到適應
//IN_SAMPLE_INT 整數採樣
//EXACTLY 將圖片完整地放入外部容器
//將圖片完整地放入外部容器,節約內存
//設置解碼的options,用於配置BitmapFactory的參數
.decodingOptions(new BitmapFactory.Options())
//設置延時加載,默認不延時
.delayBeforeLoading(30)
//爲ImageDownLoader設置輔助參數 ImageDownloader#getStream(String, Object)
.extraForDownloader(null)
//爲ImageLoadingListener* listener設置Handler
.handler(null)
//硬盤解碼完畢時進行預處理圖片
.preProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return bitmap;
}
})
//顯示前處理圖片
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return bitmap;
}
})
.build();