ImageLoaderConfiguration是針對圖檔緩存的全局配置,主要有線程類、緩存大小、磁盤大小、圖檔下載下傳與解析、日志方面的配置。
ImageLoaderConfiguration config =
new
ImageLoaderConfiguration.Builder(getApplicationContext())
// 記憶體緩存的設定選項 (最大圖檔寬度,最大圖檔高度) 預設目前螢幕分辨率
.memoryCacheExtraOptions(480, 800)
// 硬碟緩存的設定選項 (最大圖檔寬度,最大圖檔高度,壓縮格式,壓縮品質,處理器)
.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
// 設定自定義加載和顯示圖檔的線程池
.taskExecutor(DefaultConfigurationFactory.createExecutor(3,Thread.NORM_PRIORITY - 1, QueueProcessingType.FIFO))
// 設定自定義加載和顯示記憶體緩存或者硬碟緩存圖檔的線程池
.taskExecutorForCachedImages(DefaultConfigurationFactory.createExecutor(3,Thread.NORM_PRIORITY - 1, QueueProcessingType.FIFO))
// 設定顯示圖檔線程池大小,預設為3
// 注:如果設定了taskExecutor或者taskExecutorForCachedImages 此設定無效
.threadPoolSize(3)
// 設定圖檔加載線程的優先級,預設為Thread.NORM_PRIORITY-1
// 注:如果設定了taskExecutor或者taskExecutorForCachedImages 此設定無效
.threadPriority(Thread.NORM_PRIORITY - 1)
// 設定圖檔加載和顯示隊列處理的類型 預設為QueueProcessingType.FIFO
// 注:如果設定了taskExecutor或者taskExecutorForCachedImages 此設定無效
.tasksProcessingOrder(QueueProcessingType.FIFO)
// 設定拒絕緩存在記憶體中一個圖檔多個大小 預設為允許,(同一個圖檔URL)根據不同大小的imageview儲存不同大小圖檔
.denyCacheImageMultipleSizesInMemory()
// 設定記憶體緩存 預設為一個目前應用可用記憶體的1/8大小的LruMemoryCache
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
// 設定記憶體緩存的最大大小 預設為一個目前應用可用記憶體的1/8
.memoryCacheSize(2 * 1024 * 1024)
// 設定記憶體緩存最大大小占目前應用可用記憶體的百分比 預設為一個目前應用可用記憶體的1/8
.memoryCacheSizePercentage(13)
// 設定硬碟緩存
// 預設為StorageUtils.getCacheDirectory(getApplicationContext())
// 即/mnt/sdcard/android/data/包名/cache/
.discCache(new UnlimitedDiscCache(StorageUtils.getCacheDirectory(getApplicationContext())))
// 設定硬碟緩存的最大大小
.discCacheSize(50 * 1024 * 1024)
// 設定硬碟緩存的檔案的最多個數
.discCacheFileCount(100)
// 設定硬碟緩存檔案名生成規範
// 預設為new HashCodeFileNameGenerator()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
// 設定圖檔下載下傳器
// 預設為 DefaultConfigurationFactory.createBitmapDisplayer()
.imageDownloader( new HttpClientImageDownloader(getApplicationContext(), new DefaultHttpClient()))
// 設定圖檔解碼器
// 預設為DefaultConfigurationFactory.createImageDecoder(false)
.imageDecoder(DefaultConfigurationFactory.createImageDecoder(false))
// 設定預設的圖檔顯示選項
// 預設為DisplayImageOptions.createSimple()
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
// 列印DebugLogs
.writeDebugLogs()
// 建立
.build();
DisplayImageOptions 用于指導每一個Imageloader根據網絡圖檔的狀态(空白、下載下傳錯誤、正在下載下傳)顯示對應的圖檔,是否将緩存加載到磁盤上,下載下傳完後對圖檔進行怎麼樣的處理。
// 設定圖檔加載時的預設圖檔
.showImageOnLoading(R.drawable.ic_chat_def_pic)
// 設定圖檔加載失敗的預設圖檔
.showImageOnFail(R.drawable.ic_chat_def_pic_failure)
// 設定圖檔URI為空時預設圖檔
.showImageForEmptyUri(R.drawable.ic_chat_def_pic)
// 設定是否将View在加載前複位
.resetViewBeforeLoading(false)
// 設定延遲部分時間才開始加載
// 預設為0
.delayBeforeLoading(100)
// 設定添加到記憶體緩存
// 預設為false
.cacheInMemory(true)
// 設定添加到硬碟緩存
// 預設為false
.cacheOnDisc(true)
// 設定規模類型的解碼圖像
// 預設為ImageScaleType.IN_SAMPLE_POWER_OF_2
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// 設定位圖圖像解碼配置
// 預設為Bitmap.Config.ARGB_8888
.bitmapConfig(Bitmap.Config.ARGB_8888)
// 設定選項的圖像解碼
.decodingOptions(new Options())
// 設定自定義顯示器
// 預設為DefaultConfigurationFactory.createBitmapDisplayer()
.displayer(new FadeInBitmapDisplayer(300))
// 設定自定義的handler
// 預設為new Handler()
.handler(new Handler())
// 建立
.build();