Android 中UniverImageLoader的屬性及使用

public class ImageLoaderManager {
private static final int THREAD_COUNT=4;//開啓線程的數量
private static final int PRIORITY = 2;//優先級
private static final int MEMORY_CACHE_SIZE = 2 * 1024 * 1024;
private static final int DISK_CACHE_SIZE = 50 * 1024 * 1024;
private static final int CONNECTION_TIME_OUT = 5 * 1000;
private static final int READ_TIME_OUT = 30 * 1000;//讀超時時間

private static ImageLoaderManager mInstance = null;
private static ImageLoader mLoader = null;

//獲取ImageLoaderManager 的單例模式
public static ImageLoaderManager getInstance(Context context) {
    if (mInstance == null) {
        synchronized (ImageLoaderManager.class) {
            if (mInstance == null) {
                mInstance = new ImageLoaderManager(context);
            }
        }
    }
    return mInstance;
}

//構造私有方法 在創建ImageLoaderManager 的時候,就配置好相關的設置
private ImageLoaderManager(Context context) {
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
            .threadPoolSize(THREAD_COUNT)//設置線程的數量
            .threadPriority(Thread.NORM_PRIORITY-PRIORITY)//設置優先級
            .denyCacheImageMultipleSizesInMemory()//設置加載的圖片只有一種格式,默認時多種格式
            .memoryCache(new WeakMemoryCache())//設置弱引用,當內存不足時,會回收圖片
            .diskCacheSize(DISK_CACHE_SIZE)// 設置硬盤的緩存大小
            //將保存的時候的URI名稱用MD5加密 設置硬盤緩存文件名生成規範
            .diskCacheFileNameGenerator(new Md5FileNameGenerator())
            // 設置圖片加載和顯示隊列處理的類型 默認爲QueueProcessingType.FIFO
            // 注:如果設置了taskExecutor或者taskExecutorForCachedImages 此設置無效
            .tasksProcessingOrder(QueueProcessingType.LIFO)
            //設置圖片默認的顯示選項
            .defaultDisplayImageOptions(getDefaultOptions())
            // 設置圖片下載器
            // 默認爲 DefaultConfigurationFactory.createBitmapDisplayer()
            .imageDownloader(new BaseImageDownloader(context,CONNECTION_TIME_OUT,READ_TIME_OUT))
           //打印DebugLogs
            .writeDebugLogs()
            .build();
    ImageLoader.getInstance().init(config);
    mLoader = ImageLoader.getInstance();
}


/**
 * 默認的圖片顯示Options ,可設置圖片的緩存策略,編解碼方式等,非常重要
 * @return
 */
private DisplayImageOptions getDefaultOptions() {
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.default_user_avatar)//當URL爲空時顯示的圖片
            .showImageOnFail(R.drawable.default_user_avatar)//當圖片加載失敗時,顯示的圖片
            .cacheInMemory(true)//設置下載的圖片是否緩存在內存中,重要,否則圖片不會緩存到內存中
            .cacheOnDisk(true)//設置下載的圖片是否緩存到SD卡中,重要哦,否則圖片不會緩存到硬盤中
            .considerExifParams(true)//是否考慮JPEG圖像EXIF參數(旋轉,翻轉)
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設置圖片以如何的編碼方式顯示
            .bitmapConfig(Bitmap.Config.RGB_565)//設置圖片的解碼類型
            .decodingOptions(new BitmapFactory.Options())//設置圖片的解碼配置
            .resetViewBeforeLoading(true)//設置圖片在下載前是否需要重置,復位
            .build();
    return options;
    //還可以設置其他的相關的屬性
    // 設置圖片加載時的默認圖片
    // .showImageOnLoading(R.drawable.ic_chat_def_pic)
    // 設置延遲部分時間纔開始加載  默認爲0
    // .delayBeforeLoading(100)
    // 設置添加到內存緩存
    // 默認爲false
    // 設置選項的圖像解碼
    // .decodingOptions(new Options())
    // 設置自定義顯示器
    // 默認爲DefaultConfigurationFactory.createBitmapDisplayer()
    // .displayer(new FadeInBitmapDisplayer(300))
    // 設置自定義的handler
    // 默認爲new Handler()
    // .handler(new Handler())

}

//加載圖片,並且顯示到imageview中
public void displayImage(ImageView imageView, String path, ImageLoadingListener listener) {
    if (mLoader != null) {
        mLoader.displayImage(path,imageView,listener);
    }
}

public void displayImage(ImageView imageView, String path) {
    displayImage(imageView,path,null);
}

}

發佈了23 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章