public class ImageLoaderUtil {
//初使化
public static void initImageLoader(Context context){
//自定義磁盤緩存路徑 系統默認的緩存路徑 sd...<package>..cache 當app被卸載時,此路徑下的緩存圖片一併被刪除
//File cacheDir=getExternalCacheDir();
File cacheDir= new File(Environment.getExternalStorageDirectory().getPath()+"/Pictures");//自定義 sd卡的緩存路徑
//第一步:對ImageLoader進行初使化
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(320, 450) // default = device screen dimensions 內存緩存文件的最大長寬
.diskCacheExtraOptions(480, 800, null) // 本地緩存的詳細信息(緩存的最大長寬),最好不要設置這個
.threadPriority(Thread.NORM_PRIORITY - 2) // default 設置當前線程的優先級
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(10 * 1024 * 1024)) //可以通過自己的內存緩存實現
.memoryCacheSize(2 * 1024 * 1024) // 內存緩存的最大值
.memoryCacheSizePercentage(13) // default
.diskCache(new UnlimitedDiscCache(cacheDir)) // 磁盤緩存 --default 可以自定義緩存路徑
.diskCacheSize(20 * 1024 * 1024) // 50 Mb sd卡(本地)緩存的最大值
.diskCacheFileCount(100) // 可以緩存的文件數量
// default爲使用HASHCODE對UIL進行加密命名, 還可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(context)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs() // 打印debug log
.build();
ImageLoader.getInstance().init(configuration);
}
/**
* 得到圖片的顯示設置類對象
* @param context
* @return
*/
public static DisplayImageOptions getImageOption(Context context){
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用內存緩存
.cacheOnDisk(true)//使用磁盤緩存
.showImageOnLoading(R.mipmap.ic_launcher)//設置正在下載的圖片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url爲空或請求的資源不存在時
.showImageOnFail(R.mipmap.ic_launcher)//下載失敗時顯示的圖片
.bitmapConfig(Bitmap.Config.RGB_565)//設置圖片色彩模式
.imageScaleType(ImageScaleType.EXACTLY)//設置圖片的縮放模式===imageView,,ScaleType
.displayer(new RoundedBitmapDisplayer(50))//設置圖片圓角顯示 弧度
.build();
return options;
}
}
需要寫一個Application類來實現初始化,在onCreate方法中來調用initConfig方法。
最後只需要在恰當的地方加上ImageLoader的第三步即可。
//加載網絡的圖片list.get(position%list.size()) ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView, ImageloaderUtil.getImageOptions());