1. 程式人生 > >ImageLoader的圖片載入

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;
}

}