天天看點

Android-Universal-Image-Loader-master

Android 萬能的一個Image圖像加載器,支援緩存,非常棒...

Github:https://github.com/nostra13/Android-Universal-Image-Loader

1.全局(Application)初始化:

/**
	 * 初始化全局  ImageLoader
	 * @param context
	 */
	public  void initImageLoader( ) {
		//Sd卡路徑
		File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "AppImage/");  
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.denyCacheImageMultipleSizesInMemory()
				.diskCacheFileNameGenerator(new Md5FileNameGenerator())//加密方式
				.tasksProcessingOrder(QueueProcessingType.LIFO)
				.diskCache(new UnlimitedDiscCache(cacheDir))//自定義緩存路徑 
//				.writeDebugLogs() //打開log日志
				.build();
		//初始化
		ImageLoader.getInstance().init(config);
	}
           

2. DisplayImageOptions

顯示配置、可以加載圖檔時候配置,也可以在 

(1)中Application全局配置:.defaultDisplayImageOptions(defaultDisplayImageOptions)

具體需求,具體定義...

/**
	 * 顯示配置資訊 options
	 * @return
	 */
	public static DisplayImageOptions initOptions() {
		DisplayImageOptions	options = new DisplayImageOptions.Builder()
		.showImageOnLoading(R.drawable.ic_stub)在ImageView加載過程中顯示圖檔
		.showImageForEmptyUri(R.drawable.ic_empty)//image連接配接位址為空時
		.showImageOnFail(R.drawable.ic_error)//加載錯誤
		.cacheInMemory(true) //加載圖檔時會在記憶體中加載緩存
		.cacheOnDisk(true)    //加載圖檔時會在磁盤中加載緩存
		.considerExifParams(true)是否考慮JPEG圖像EXIF參數(旋轉,翻轉)
		.bitmapConfig(Bitmap.Config.RGB_565)//565比較省記憶體
		.displayer(new SimpleBitmapDisplayer()) // 開啟動畫監聽default
		.build();
		return options;
	}	
           

配置資訊有很多,可以參考官網最新版本,

這裡用到的Jar + 源碼 : Android-Universal-Image-Loader-master

3.加載圖檔方式

Android-Universal-Image-Loader-master

需要注意:

/**
		 * 在第四參數 有倆種方式:
		 *  1. new SimpleImageLoadingListener 
		 *  2. new ImageLoadingListener 
		 *  差別:前者簡單方式成功後自動指派Bitmap,後者需要自己手動處理
		 * 
		 * */
		imageLoader.displayImage("url", "imageView","顯示配置..DisplayImageOptions ", new SimpleImageLoadingListener() {

			@Override
			public void onLoadingStarted(String imageUri, View view) {
				// 加載開始
			}

			@Override
			public void onLoadingFailed(String imageUri, View view,FailReason failReason) {
				// 加載失敗
			}

			@Override
			public void onLoadingComplete(String imageUri, View view,Bitmap loadedImage) {
				// 加載成功
			}

			@Override
			public void onLoadingCancelled(String imageUri, View view) {super.onLoadingCancelled(imageUri, view);
			// 加載取消
			}
		}, new ImageLoadingProgressListener() {
			@Override
			public void onProgressUpdate(String imageUri, View view,int current, int total) {
				/**
				 * 進度回調,顯示% 
				 * 如果要列印需要開啟配置 .displayer(new SimpleBitmapDisplayer())  // 開啟動畫監聽default
				 * */
				Log.i(imageUri, "current: " + current + "   total:"+ total+ " 進度:"+Math.round(100.0f * current / total));
			}
		});


		/**
		 * new ImageLoadingListener 情況下
		 * 
		public void onLoadingComplete(String imageUri, View view, BitmaploadedImage) {
			//加載成功 
			if(loadedImage != null){
				ImageView imageView=(ImageView)view; 
				imageView.setImageBitmap(loadedImage); 
			}
		}
		 */
	
           

其他備注:

加載不同URL 位址:

String imageUri = "http://site.com/image.png"; // from Web  
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card  
String imageUri = "content://media/external/audio/albumart/13"; // from content provider  
String imageUri = "assets://image.png"; // from assets  
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)