ImageLoader的圖片載入
ImageLoader的圖片載入
package com.bwei.day07_multi_listview.app;
import android.app.Application;
import android.content.Context;
import android.os.Environment;
import com.bwei.day07_multi_listview.R;
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.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
import java.io.File;
/**
- Lru
- 演算法:
- 最近最多使用----回收的物件,是指的圖片
*/
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化ImageLoader
intImageLoader();
}
private void intImageLoader() {
ImageLoader.getInstance().init(getConifg1(this));
}
// options 配置載入圖片時候的東西
public static DisplayImageOptions getOptions() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
// .showImageOnLoading(R.drawable.ic_stub)// 設定圖片下載期間顯示的圖片
//
// .showImageForEmptyUri(R.drawable.ic_empty)// 設定圖片Uri為空或是錯誤的時候顯示的圖片
//
// .showImageOnFail(R.drawable.ic_error)// 設定圖片載入或解碼過程中發生錯誤顯示的圖片
//
// .resetViewBeforeLoading(false) // default 設定圖片在載入前是否重置、復位
//
// .delayBeforeLoading(1000) // 下載前的延遲時間
.cacheInMemory(true)// default 設定下載的圖片是否快取在記憶體中
.cacheOnDisk(true)// default 設定下載的圖片是否快取在SD卡中
//
// .preProcessor(…)
//
// .postProcessor(…)
//
// .extraForDownloader(…)
//
// .considerExifParams(false)// default
//
// .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)// default 設定圖片以如何的編碼方式顯示
//
// .bitmapConfig(Bitmap.Config.ARGB_8888)// default 設定圖片的解碼型別
//
// .decodingOptions(…) // 圖片的解碼設定
//
// .displayer(newSimpleBitmapDisplayer()) // default 還可以設定圓角圖片new RoundedBitmapDisplayer(20)
//
// .handler(newHandler()) // default
.build();
return options;
}
// 自己定義ImageLoader的配置資訊
public ImageLoaderConfiguration config(Context context) {
File cacheDir = StorageUtils.getCacheDirectory(context); //快取資料夾路徑
//
// File myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/myCache");
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
// .memoryCacheExtraOptions(480, 800)// default = device screen dimensions 記憶體快取檔案的最大長寬
// .diskCacheExtraOptions(480, 800, null) // 本地快取的詳細資訊(快取的最大長寬),最好不要設定這個
// .taskExecutor(…)
// .taskExecutorForCachedImages(…)
// .threadPoolSize(3)// default 執行緒池內載入的數量
// .threadPriority(Thread.NORM_PRIORITY - 2)// default 設定當前執行緒的優先順序
// .tasksProcessingOrder(QueueProcessingType.FIFO)// default
// .denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))//可以通過自己的記憶體快取實現
.memoryCacheSize(2 * 1024 * 1024) // 記憶體快取的最大值
.memoryCacheSizePercentage(13)// default
.diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定義快取路徑
.diskCacheSize(50 * 1024 * 1024)// 50 Mb sd卡(本地)快取的最大值
.diskCacheFileCount(100) // 可以快取的檔案數量
// default為使用HASHCODE對UIL進行加密命名, 還可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(context)) // default
// .imageDecoder(new BaseImageDecoder()) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())// default
.writeDebugLogs()// 列印debug log
.build();//開始構建
return config;
}
//簡化版
public ImageLoaderConfiguration getConifg1(Context context) {
File cacheDir = StorageUtils.getCacheDirectory(context); //快取資料夾路徑
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))//可以通過自己的記憶體快取實現
.memoryCacheSize(2 * 1024 * 1024) // 記憶體快取的最大值
.diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定義快取路徑
.diskCacheSize(50 * 1024 * 1024)// 50 Mb sd卡(本地)快取的最大值
.build();//開始構建
return config;
}
}