先在MyApplication中初始化ImageLoader對象,方便以後調用:
package com.momo2.momo2;
import java.io.File;
import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
public class MyApplication extends Application {
private static ImageLoader imageLoader;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
// 獲取到緩存的目錄地址
File cacheDir = StorageUtils.getOwnCacheDirectory(this,
"duobao/duobao");
// 創建默認的ImageLoader配置參數
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(
this)
.memoryCacheExtraOptions(480, 800)
// default = device screen dimensions
// .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75,
// null)
.threadPoolSize(5)
// default
.threadPriority(Thread.NORM_PRIORITY - 1)
// default
.tasksProcessingOrder(QueueProcessingType.FIFO)
// default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)
// default
.discCache(new UnlimitedDiscCache(cacheDir))
// default
.discCacheSize(10 * 1024 * 1024).discCacheFileCount(100)
.discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(this)) // default
.imageDecoder(new BaseImageDecoder(false)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs().build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(configuration);
}
/**
* 獲取漸現顯示選項
*
* @param loadingImageResId
* 加載期間顯示的圖�?
* @param errorImageResid
* 加載錯誤時顯示的圖片
* @param emptyImageResId
* 空圖片或者解析圖片出錯時顯示的圖�?
* @return
*/
public static DisplayImageOptions getFadeOptions(int loadingImageResId,
int errorImageResid, int emptyImageResId) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
// 設置圖片在下載期間顯示的圖片
.showImageOnLoading(loadingImageResId)
// 設置圖片加載/解碼過程中錯誤時候顯示的圖片
.showImageOnFail(errorImageResid)
// 設置圖片Uri爲空或是錯誤的時候顯示的圖片
.showImageForEmptyUri(emptyImageResId)
// 設置下載的圖片是否緩存在內存中
.cacheInMemory(true)
// 設置下載的圖片是否緩存在SD卡中
.cacheOnDisc(true)
/**
* 設置圖片縮放方式: EXACTLY :圖像將完全按比例縮小到目標大小
* EXACTLY_STRETCHED:圖片會縮放到目標大小完全 IN_SAMPLE_INT:圖像將被二次採樣的整數倍
* IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標大小 NONE:圖片不會調整
***/
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
// 設置圖片的解碼類型
.bitmapConfig(Bitmap.Config.RGB_565)
// 設置圖片下載前的延遲
.delayBeforeLoading(100)
// delayInMillis爲你設置的延遲時間
// 設置圖片加入緩存前,對bitmap進行設置
// .preProcessor(BitmapProcessor preProcessor)
/**
* 圖片顯示方式: RoundedBitmapDisplayer(int roundPixels)設置圓角圖片
* FakeBitmapDisplayer()這個類什麼都沒做 FadeInBitmapDisplayer(int
* durationMillis)設置圖片漸顯的時間
* * SimpleBitmapDisplayer()正常顯示一張圖片
**/
.displayer(new FadeInBitmapDisplayer(1000))// 漸顯--設置圖片漸顯的時間
.build();
return options;
}
public static DisplayImageOptions getFadeOptions1(int loadingImageResId,
int errorImageResid, int emptyImageResId) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
// 設置圖片在下載期間顯示的圖片
.showImageOnLoading(loadingImageResId)
// 設置圖片加載/解碼過程中錯誤時候顯示的圖片
.showImageOnFail(errorImageResid)
// 設置圖片Uri爲空或是錯誤的時候顯示的圖片
.showImageForEmptyUri(emptyImageResId)
// 設置下載的圖片是否緩存在內存中
.cacheInMemory(true)
// 設置下載的圖片是否緩存在SD卡中
.cacheOnDisc(true)
/**
* 設置圖片縮放方式: EXACTLY :圖像將完全按比例縮小到目標大小
* EXACTLY_STRETCHED:圖片會縮放到目標大小完全 IN_SAMPLE_INT:圖像將被二次採樣的整數倍
* IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標大小 NONE:圖片不會調整
***/
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
// 設置圖片的解碼類型
.bitmapConfig(Bitmap.Config.RGB_565)
// 設置圖片下載前的延遲
.delayBeforeLoading(100)
// delayInMillis爲你設置的延遲時間
// 設置圖片加入緩存前,對bitmap進行設置
// .preProcessor(BitmapProcessor preProcessor)
/**
* 圖片顯示方式: RoundedBitmapDisplayer(int roundPixels)設置圓角圖片
* FakeBitmapDisplayer()這個類什麼都沒做 FadeInBitmapDisplayer(int
* durationMillis)設置圖片漸顯的時間
* * SimpleBitmapDisplayer()正常顯示一張圖片
**/
.displayer(new RoundedBitmapDisplayer(100))// 漸顯--設置圖片漸顯的時間
.build();
return options;
}
/**
* 獲取默認顯示配置選項
*/
public static DisplayImageOptions getDefaultOptions() {
return DisplayImageOptions.createSimple();
}
/**
* 清除緩存
*/
public static void clearCache() {
imageLoader.clearMemoryCache();
imageLoader.clearDiscCache();
}
public static ImageLoader getImageLoader() {
return imageLoader;
}
}
然後需要使用圖片加載的時候就這樣使用:
MyApplication.getImageLoader().displayImage(
mList.get(position),//圖片的URL地址
holder.imageView,//imageView控件
MyApplication.getFadeOptions(R.drawable.empty_photo,
R.drawable.empty_photo, R.drawable.empty_photo));