Imageloader圖片加載在實際開發中的使用

先在MyApplication中初始化ImageLoader對象,方便以後調用:

package com.momo2.momo2;

import java.io.File;

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

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.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;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;

public class MyApplication extends Application {
	private static ImageLoader imageLoader;

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		// 獲取到緩存的目錄地址
		File cacheDir = StorageUtils.getOwnCacheDirectory(this,
				"duobao/duobao");
		// 創建默認的ImageLoader配置參數
		ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(
				this)
				.memoryCacheExtraOptions(480, 800)
				// default = device screen dimensions
				// .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75,
				// null)
				.threadPoolSize(5)
				// default
				.threadPriority(Thread.NORM_PRIORITY - 1)
				// default
				.tasksProcessingOrder(QueueProcessingType.FIFO)
				// default
				.denyCacheImageMultipleSizesInMemory()
				.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
				.memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)
				// default
				.discCache(new UnlimitedDiscCache(cacheDir))
				// default
				.discCacheSize(10 * 1024 * 1024).discCacheFileCount(100)
				.discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
				.imageDownloader(new BaseImageDownloader(this)) // default
				.imageDecoder(new BaseImageDecoder(false)) // default
				.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
				.writeDebugLogs().build();
		imageLoader = ImageLoader.getInstance();
		imageLoader.init(configuration);
	}

	/**
	 * 獲取漸現顯示選項
	 * 
	 * @param loadingImageResId
	 *            加載期間顯示的圖�?
	 * @param errorImageResid
	 *            加載錯誤時顯示的圖片
	 * @param emptyImageResId
	 *            空圖片或者解析圖片出錯時顯示的圖�?
	 * @return
	 */
	public static DisplayImageOptions getFadeOptions(int loadingImageResId,
			int errorImageResid, int emptyImageResId) {
		DisplayImageOptions options = new DisplayImageOptions.Builder()
		// 設置圖片在下載期間顯示的圖片
				.showImageOnLoading(loadingImageResId)
				// 設置圖片加載/解碼過程中錯誤時候顯示的圖片
				.showImageOnFail(errorImageResid)
				// 設置圖片Uri爲空或是錯誤的時候顯示的圖片
				.showImageForEmptyUri(emptyImageResId)
				// 設置下載的圖片是否緩存在內存中
				.cacheInMemory(true)
				// 設置下載的圖片是否緩存在SD卡中
				.cacheOnDisc(true)
				/**
				 * 設置圖片縮放方式: EXACTLY :圖像將完全按比例縮小到目標大小
				 * EXACTLY_STRETCHED:圖片會縮放到目標大小完全 IN_SAMPLE_INT:圖像將被二次採樣的整數倍
				 * IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標大小 NONE:圖片不會調整
				 ***/
				.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
				// 設置圖片的解碼類型
				.bitmapConfig(Bitmap.Config.RGB_565)
				// 設置圖片下載前的延遲
				.delayBeforeLoading(100)
				// delayInMillis爲你設置的延遲時間
				// 設置圖片加入緩存前,對bitmap進行設置
				// .preProcessor(BitmapProcessor preProcessor)

				/**
				 * 圖片顯示方式: RoundedBitmapDisplayer(int roundPixels)設置圓角圖片
				 * FakeBitmapDisplayer()這個類什麼都沒做 FadeInBitmapDisplayer(int
				 * durationMillis)設置圖片漸顯的時間     
				 * * SimpleBitmapDisplayer()正常顯示一張圖片
				 **/
				.displayer(new FadeInBitmapDisplayer(1000))// 漸顯--設置圖片漸顯的時間
				.build();
		return options;
	}

	public static DisplayImageOptions getFadeOptions1(int loadingImageResId,
			int errorImageResid, int emptyImageResId) {
		DisplayImageOptions options = new DisplayImageOptions.Builder()
		// 設置圖片在下載期間顯示的圖片
				.showImageOnLoading(loadingImageResId)
				// 設置圖片加載/解碼過程中錯誤時候顯示的圖片
				.showImageOnFail(errorImageResid)
				// 設置圖片Uri爲空或是錯誤的時候顯示的圖片
				.showImageForEmptyUri(emptyImageResId)
				// 設置下載的圖片是否緩存在內存中
				.cacheInMemory(true)
				// 設置下載的圖片是否緩存在SD卡中
				.cacheOnDisc(true)
				/**
				 * 設置圖片縮放方式: EXACTLY :圖像將完全按比例縮小到目標大小
				 * EXACTLY_STRETCHED:圖片會縮放到目標大小完全 IN_SAMPLE_INT:圖像將被二次採樣的整數倍
				 * IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標大小 NONE:圖片不會調整
				 ***/
				.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
				// 設置圖片的解碼類型
				.bitmapConfig(Bitmap.Config.RGB_565)
				// 設置圖片下載前的延遲
				.delayBeforeLoading(100)
				// delayInMillis爲你設置的延遲時間
				// 設置圖片加入緩存前,對bitmap進行設置
				// .preProcessor(BitmapProcessor preProcessor)

				/**
				 * 圖片顯示方式: RoundedBitmapDisplayer(int roundPixels)設置圓角圖片
				 * FakeBitmapDisplayer()這個類什麼都沒做 FadeInBitmapDisplayer(int
				 * durationMillis)設置圖片漸顯的時間     
				 * * SimpleBitmapDisplayer()正常顯示一張圖片
				 **/
				.displayer(new RoundedBitmapDisplayer(100))// 漸顯--設置圖片漸顯的時間
				.build();
		return options;
	}

	/**
	 * 獲取默認顯示配置選項
	 */
	public static DisplayImageOptions getDefaultOptions() {
		return DisplayImageOptions.createSimple();
	}

	/**
	 * 清除緩存
	 */
	public static void clearCache() {
		imageLoader.clearMemoryCache();
		imageLoader.clearDiscCache();
	}

	public static ImageLoader getImageLoader() {
		return imageLoader;
	}

}

然後需要使用圖片加載的時候就這樣使用:

	MyApplication.getImageLoader().displayImage(
				mList.get(position),//圖片的URL地址
				holder.imageView,//imageView控件
				MyApplication.getFadeOptions(R.drawable.empty_photo,
						R.drawable.empty_photo, R.drawable.empty_photo));




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