android異步加載網絡圖片

首先要導入比較主流的jar包universal-image-loader-1.9.5.jar,據說目前主流的app都在使用這個jar包,包括淘寶京東一類的app。

然後就是配置用的公共類


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

import com.meikuang.landongjiguang.renyuandingwei.R;
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.ImageLoaderConfiguration.Builder;
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.CircleBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

public class ImageLoaderUtils {
	/**
	 *
	 * @param context
	 */
	public static ImageLoaderConfiguration initConfiguration(Context context) {
		ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
//				.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
//				.diskCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)//壓縮圖片用的?不造啊
				.threadPoolSize(3)
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.tasksProcessingOrder(QueueProcessingType.FIFO)
				.denyCacheImageMultipleSizesInMemory()
				.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
				.memoryCacheSize(2 * 1024 * 1024)
				.memoryCacheSizePercentage(13)
				.diskCacheSize(50 * 1024 * 1024)
				.diskCacheFileCount(100)
				.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
				.imageDecoder(new BaseImageDecoder(true))
				.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
				.writeDebugLogs()
				.build();

		return configuration;
	}

	/**
	 *
	 * @return
	 */
	public static DisplayImageOptions initOptions() {
		DisplayImageOptions options = new DisplayImageOptions.Builder()
				.showImageOnLoading(R.drawable.setting_page_head)//正在下載時顯示的圖片
				.showImageForEmptyUri(R.drawable.setting_page_head)//下載地址爲空時圖片
				.showImageOnFail(R.drawable.setting_page_head)//下載失敗時圖片
				.cacheInMemory(true)
				.cacheOnDisk(true)
				.considerExifParams(true)
				.bitmapConfig(Bitmap.Config.RGB_565)
				.displayer(new RoundedBitmapDisplayer(20))
				.build();
		return options;
	}
}

具體用法

ImageLoader imageLoader = ImageLoader.getInstance();//定義圖片下載
imageLoader.init(ImageLoaderUtils.initConfiguration(this));//圖片初始化與優化(主要是緩存的優化跟加載),需要關聯一下當前的activity
ImageView img_head = (ImageView)view.findViewById(R.id.img_head);
String IMAGE_URLS ="http://img3.duitang.com/uploads/item/201608/24/20160824193821_2FuVi.jpeg";//圖片下載地址
imageLoader.displayImage(IMAGE_URLS, img_head, ImageLoaderUtils.initOptions());//把地址裏的圖片下載下來並放到自己需要的位置上

總的來說這款比較好用,就是需要注意需要初始化,如果不是使用jar而是公共類進行的話,可以把初始化寫在公共類裏,這樣比較方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章