1. 程式人生 > >ImageLoader快取,清空圖片

ImageLoader快取,清空圖片

import android.content.Context;
import android.graphics.Bitmap;

import com.baway.month.R;
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.ImageLoaderConfiguration.Builder;
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;

public class ImageLoaderUtils {
    /**
     * 初始化ImageLoaderConfiguration 這個可以只做簡單的初始化,此方法建議在 Application中進行初始化
     *
     * @param context
     */
    public static void initConfiguration(Context context) {

        Builder configuration = new ImageLoaderConfiguration.Builder(context);

//         --------------------------------------------------------------------
//         本段程式碼,如果是測試使用時,可以不新增,不影響ImageLoader的正常使用
         configuration.memoryCacheExtraOptions(480, 800)
         // default = device screen dimensions
         // 快取到磁碟中的圖片寬高
         .diskCacheExtraOptions(480, 800, null)
         // .taskExecutor(null)
         // .taskExecutorForCachedImages()
         .threadPoolSize(3)
         // default 執行緒優先順序
         .threadPriority(Thread.NORM_PRIORITY - 2)
         // default
         .tasksProcessingOrder(QueueProcessingType.FIFO)
         // // default設定在記憶體中快取影象的多種尺寸
         // 載入同一URL圖片時,imageView從小變大時,從記憶體快取中載入
         .denyCacheImageMultipleSizesInMemory()
         // 超過設定的快取大小時,記憶體快取的清除機制
         .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
         // 記憶體的一個大小
         .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)
         // default 將圖片資訊快取到該路徑下
         // default 磁碟快取的大小
         .diskCacheSize(50 * 1024 * 1024)
         // 磁碟快取檔案的個數
         .diskCacheFileCount(100)
         // 磁碟快取的檔名的命名方式//一般使用預設值 (獲取檔名稱的hashcode然後轉換成字串)或MD5 new
         // Md5FileNameGenerator()原始檔的名稱同過md5加密後儲存
         .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
         // 設定預設的圖片載入
         // 使用預設的圖片解析器
         .imageDecoder(new BaseImageDecoder(true)) // default
         .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
         .writeDebugLogs();

        // ---------------------------------------------------------------------
        ImageLoader.getInstance().init(configuration.build());
    }

    /**
     * 初始化DisplayImageOptions
     *
     * @param context
     * @return
     */
    public static DisplayImageOptions initOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
        // 設定圖片在下載期間顯示的圖片
                .showImageOnLoading(R.drawable.ic_launcher)
                // 設定圖片Uri為空或是錯誤的時候顯示的圖片
                .showImageOnFail(R.drawable.ic_launcher)
                // 設定下載的圖片是否快取在記憶體中
                .cacheInMemory(true)
                // 設定下載的圖片是否快取在SD卡中
                .cacheOnDisc(true)

                // --------------------------------------------------------------------
                // 如果您只想簡單使用ImageLoader這塊也可以不用配置
                // 是否考慮JPEG影象EXIF引數(旋轉,翻轉)
                .considerExifParams(true)
                // 設定圖片以如何的編碼方式顯示
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                // 設定圖片的解碼型別//
                .bitmapConfig(Bitmap.Config.RGB_565)
                // 設定圖片的解碼配置
                // .decodingOptions(options)
                // .delayBeforeLoading(int delayInMillis)//int
                // delayInMillis為你設定的下載前的延遲時間
                // 設定圖片加入快取前,對bitmap進行設定
                // .preProcessor(BitmapProcessor preProcessor)
                // 設定圖片在下載前是否重置,復位
                .resetViewBeforeLoading(true)
                // 是否設定為圓角,弧度為多少
                .displayer(new RoundedBitmapDisplayer(50))
                // 是否圖片載入好後漸入的動畫時間
                .displayer(new FadeInBitmapDisplayer(100))
                // 構建完成

                .build();
        return options;
    }
}