首先要導入比較主流的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而是公共類進行的話,可以把初始化寫在公共類裏,這樣比較方便。