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.加載圖檔方式
需要注意:
/**
* 在第四參數 有倆種方式:
* 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)