Android知識總結:Universal-Imageloader學習筆記1 基本功能與配置

背景

最近換了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();


發佈了83 篇原創文章 · 獲贊 25 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章