使用 universalimageloader 緩存圖片的配置類及使用方法
阿新 • • 發佈:2017-07-23
oid test appcompat private etop onf for time ava
0、gradle 配置
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
testCompile ‘junit:junit:4.12‘
compile ‘com.android.support:appcompat-v7:25.1.1‘
compile ‘com.squareup.okhttp3:okhttp:3.3.0‘ //okttp依賴
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5‘
}
一、配置類
/** * @author: qndroid * @function: 初始化UniverImageLoader, 並用來加載網絡圖片 * @date: 16/6/27 */ public class ImageLoaderUtil { private static final int THREAD_COUNT = 2; 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 ImageLoaderUtil mInstance = null; private static ImageLoader mLoader = null; public static ImageLoaderUtil getInstance(Context context) { if (mInstance == null) { synchronized (ImageLoaderUtil.class) { if (mInstance == null) { mInstance = new ImageLoaderUtil(context); } } } return mInstance; } /** * 私有構造方法完成初始化工作 * * @param context */ private ImageLoaderUtil(Context context) { ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .threadPoolSize(THREAD_COUNT) .threadPriority(Thread.NORM_PRIORITY - PRIORITY) .denyCacheImageMultipleSizesInMemory() //.memoryCache(new UsingFreqLimitedMemoryCache(MEMORY_CACHE_SIZE)) .memoryCache(new WeakMemoryCache()) .diskCacheSize(DISK_CACHE_SIZE) .diskCacheFileNameGenerator(new Md5FileNameGenerator())//將保存的時候的URI名稱用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .defaultDisplayImageOptions(getDefaultOptions()) .imageDownloader(new BaseImageDownloader(context, CONNECTION_TIME_OUT, READ_TIME_OUT)) .writeDebugLogs() .build(); ImageLoader.getInstance().init(config); mLoader = ImageLoader.getInstance(); } //load the image public void displayImage(ImageView imageView, String path, ImageLoadingListener listener, DisplayImageOptions options) { if (mLoader != null) { mLoader.displayImage(path, imageView, options, listener); } } //load the image 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); } /** * 默認的圖片顯示Options,可設置圖片的緩存策略,編解碼方式等,非常重要 * * @return */ private DisplayImageOptions getDefaultOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .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; } public DisplayImageOptions getOptionsWithNoCache() { DisplayImageOptions options = new DisplayImageOptions.Builder() //.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)//設置圖片在下載前是否重置,復位 .displayer(new FadeInBitmapDisplayer(400)) .build(); return options; } }
二、使用方法
// 聲明
private ImageLoaderUtil mImageLoader;
//傳入 context 實例化
mImageLoader = ImageLoaderUtil.getInstance(mContext);
//顯示圖片 第一個參數為 imageview 第二個參數為遠程的url
mImageLoader.displayImage(mImageViews[i], mHeaderValue.middle.get(i));
使用 universalimageloader 緩存圖片的配置類及使用方法