先在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));