首先要导入比较主流的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而是公共类进行的话,可以把初始化写在公共类里,这样比较方便。