GITHUB上的下載下傳路徑為:https://github.com/nostra13/Android-Universal-Image-Loader ,下載下傳最新的庫檔案,并且導入到項目的LIB下便可以使用。
1.Imageloader全局配置
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(context)
.memoryCacheExtraOptions(480, 800) // max width, max height,即儲存的每個緩存檔案的最大長寬
// Can slow ImageLoader, use it carefully (Better don't use it)/設定緩存的詳細資訊,最好不要設定這個
.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
.threadPoolSize(3)//線程池内加載的數量
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通過自己的記憶體緩存實作
.memoryCacheSize(2 * 1024 * 1024)
.discCacheSize(50 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())//将儲存的時候的URI名稱用MD5 加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
.discCacheFileCount(100) //緩存的檔案數量
.discCache(new UnlimitedDiscCache(cacheDir))//自定義緩存路徑
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)逾時時間
.writeDebugLogs() // Remove for release app
.build();//開始建構
// Initialize ImageLoader with configuration.
一般需要在Application中初始化Imageloader:
ImageLoader.getInstance().init(config);//全局初始化此配置
2.Imageloader配置需要顯示的圖檔
之後進行顯示的圖檔的各種格式DisplayImageOptions 的設定:
DisplayImageOptions options;
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher) //設定圖檔在下載下傳期間顯示的圖檔
.showImageForEmptyUri(R.drawable.ic_launcher)//設定圖檔Uri為空或是錯誤的時候顯示的圖檔
.showImageOnFail(R.drawable.ic_launcher) //設定圖檔加載/解碼過程中錯誤時候顯示的圖檔
.cacheInMemory(true)//設定下載下傳的圖檔是否緩存在記憶體中
.cacheOnDisc(true)//設定下載下傳的圖檔是否緩存在SD卡中
.considerExifParams(true) //是否考慮JPEG圖像EXIF參數(旋轉,翻轉)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//設定圖檔以如何的編碼方式顯示
.bitmapConfig(Bitmap.Config.RGB_565)//設定圖檔的解碼類型//
.decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//設定圖檔的解碼配置
//.delayBeforeLoading(int delayInMillis)//int delayInMillis為你設定的下載下傳前的延遲時間
//設定圖檔加入緩存前,對bitmap進行設定
//.preProcessor(BitmapProcessor preProcessor)
.resetViewBeforeLoading(true)//設定圖檔在下載下傳前是否重置,複位
.displayer(new RoundedBitmapDisplayer(20))//是否設定為圓角,弧度為多少
.displayer(new FadeInBitmapDisplayer(100))//是否圖檔加載好後漸入的動畫時間
.build();//建構完成
說明:
1).imageScaleType(ImageScaleType imageScaleType) 是設定圖檔的縮放方式縮放類型mageScaleType:
EXACTLY :圖像将完全按比例縮小的目标大小
EXACTLY_STRETCHED:圖檔會縮放到目标大小完全
IN_SAMPLE_INT:圖像将被二次采樣的整數倍
IN_SAMPLE_POWER_OF_2:圖檔将降低2倍,直到下一減少步驟,使圖像更小的目标大小
NONE:圖檔不會調整
2).displayer(BitmapDisplayer displayer) 是設定圖檔的顯示方式顯示方式displayer,是以我們可以自定義我們需要顯示的圖檔樣式,當然SDK中已經定義好了幾種:
RoundedBitmapDisplayer(int roundPixels)設定圓角圖檔
FakeBitmapDisplayer()
FadeInBitmapDisplayer(int durationMillis)設定圖檔漸顯的時間
SimpleBitmapDisplayer()正常顯示一張圖檔
3.監聽圖檔下載下傳進度,可以實作這個監聽接口來顯示下載下傳進度
imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted() {
//開始加載的時候執行
}
@Override
public void onLoadingFailed(FailReason failReason) {
//加載失敗的時候執行
}
@Override
public void onLoadingComplete(Bitmap loadedImage) {
//加載成功的時候執行
}
@Override
public void onLoadingCancelled() {
//加載取消的時候執行
}});
4.顯示所有來源圖檔的加載方式:
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)