圖片異步加載組件 ImageLoader

    服務器返回圖片的url,本地使用圖片異步加載組件 ImageLoader。圖片的url有以下幾種:java

(1)from Web  緩存

String imageUri = "http://site.com/image.png";

(2)from SD card  服務器

String imageUri = "file:///mnt/sdcard/image.png";

(3)from content provider  app

 String imageUri = "content://media/external/audio/albumart/13";

(4)from assets  異步

String imageUri = "assets://image.png";

(5)from drawables (only images, non-9patch)ide

String imageUri = "drawable://" + R.drawable.image;

配置ImageLoaderConfiguration這個類實現全局ImageLoader的顯示狀況ui

圖片格式的設置:DisplayImageOptions options加密

public class ImgCacheUtil {
	private static ImgCacheUtil imgCacheUtil = null;
	private static ImageLoaderConfiguration config;
	private DisplayImageOptions options;
	
	private String cacheDir = Environment.getExternalStorageDirectory()
			.getAbsolutePath() + "app/cache";
	
	
	public static ImgCacheUtil getInstance() {
		if (imgCacheUtil == null)
			imgCacheUtil = new ImgCacheUtil();
		return imgCacheUtil;
	}

	private ImgCacheUtil() {
		options = new DisplayImageOptions.Builder()
		.showImageForEmptyUri(R.drawable.icon)   //設置圖片Uri爲空或是錯誤的時候顯示的圖片 
		.showImageOnFail(R.drawable.icon)        //設置圖片加載/解碼過程當中錯誤時候顯示的圖片
		.cacheInMemory()                         //設置下載的圖片是否緩存在內存中  
		.cacheOnDisc()                           //設置下載的圖片是否緩存在SD卡中  
		.imageScaleType(ImageScaleType.EXACTLY) //設置圖片縮放方式,縮放至目標大小
		.bitmapConfig(Bitmap.Config.RGB_565)     //設置圖片的解碼類型
		.resetViewBeforeLoading()                  //設置圖片在下載前是否重置,復位  
		.displayer(new RoundedBitmapDisplayer(20)) //設置圖片顯示方式,是否設置爲圓角,弧度爲多少
		                                           //設置圖片漸顯時間 FadeInBitmapDisplayer(int durationMillis)
		                                           //正常顯示一張圖片SimpleBitmapDisplayer()
		.build();
		
		config = new ImageLoaderConfiguration.Builder(ParentApplication.getInstance())
		.memoryCacheExtraOptions(480, 800)    //即保存的每一個緩存文件的最大長寬 
         	.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 0)  //設置緩存的詳細信息,最好不要設置這個
		.threadPoolSize(3)                   //線程池內加載的數量  
		.discCacheFileCount(50)              //緩存的文件數量
		.discCache(new UnlimitedDiscCache(new File(cacheDir)))  //自定義緩存路徑
		.discCacheFileNameGenerator(new Md5FileNameGenerator()) ///使用MD5對緩存文件進行加密命名
		.memoryCache(new UsingFreqLimitedMemoryCache(2*1024*1024))//能夠經過本身的內存緩存實現
		.memoryCacheSize(2*1024*1024)
		.discCacheSize(50*1024*1024)
		.tasksProcessingOrder(QueueProcessingType.LIFO)
		.build();
	}

	public ImageLoaderConfiguration getImgLoaderConfig(){
		return config;
	}
	
	/**
	 * String imageUri = "http://site.com/image.png"; // from Web  
	 * String imageUri = "file:///mnt/sdcard/image.png"; // from SD card  
	 * String imageUri = "content://media/external/audio/albumart/13"; // from content provider  
	 * String imageUri = "assets://image.png"; // from assets  
	 * String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
	 * 加載自定義配置的圖片
	 * @param url
	 * @param imageView
	 * @param options
	 */
	public void displayImage(String url, ImageView imageView){
		ImageLoader.getInstance().displayImage(url, imageView, options);
	}
	
	/**
	 * @param url
	 * @param imageView
	 * @param listener 監聽圖片下載狀況
	 */
	public void displayImage(String url, ImageView imageView, ImageLoadingListener listener){
		ImageLoader.getInstance().displayImage(url, imageView, options, listener);	
		}

注:ImageLoaderConfiguration類在使用以前要進行初始化,不然會報錯url

ImageLoader.getInstance().init(ImgCacheUtil.getInstance().getImgLoaderConfig());
相關文章
相關標籤/搜索