ImageLoader是用来加载大量网络图片的第三方工具,可以避免图片错乱,oom等现象
首先,先提供些github的下载地址 https://github.com/nostra13/Android-Universal-Image-Loader
在使用这个第三方控件之前,我们先来了解一下Application这个类,这个类在整个应用程序中是一个单例,他的声明周期也是整个应用程序中最长了,只要程序一启动,就会回调oncreate方法,通常用来初始化全局变量,ImageLoader就需要用到这个类,因为一个应用一般都会加载很多图片,所以我们把它初始化成全局变量
第一步,写一个类继承Application,复写onCreate方法,
第二步,在manifest文件的Application内把name属性设为这个类的全类名。
好了,接下来开始介绍ImageLoader
首先,github里下载的框架里有一个downloads文件夹,里面有几个jar包,将这个几个jar包拷贝到工程的libs目录下,(jar包有一个是重复的,有报错要去掉)
然后在oocreate方法内,初始化ImageLoader和一些配置项
@Override
public void onCreate()
{
// Log.i("huang", "Application");
mApp = this;
// initHttpUitls();
initImageLoader();
}
/**
* 初始化mImagerLoader和mOptions
*/
private void initImageLoader()
{
//得到一个图片加载器
mImagerLoader = ImageLoader.getInstance();
String diskCachePathString = null;
// 设置缓存路径
// /data/data/com.example.zhsz/cache/imageCache
diskCachePathString = getCacheDir().getAbsolutePath() + File.separator
+ "imageCache";
File cacheFile = new File(diskCachePathString);
if (!cacheFile.exists())
{
cacheFile.mkdirs();
}
// 设置内存缓存大小 //得到运行时的总内存
int cacheSize = (int) (Runtime.getRuntime().maxMemory() / 8);
//配置图片加载器
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(
getApplicationContext()).threadPoolSize(3) //设置线程池数量为3
.diskCache(new UnlimitedDiskCache(cacheFile)) //设置diskCache
.diskCacheFileCount(200)// 缓存文件数量
.memoryCacheSize(cacheSize).build(); //设置MemoryCache
mImagerLoader.init(configuration);
mOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Config.ARGB_8888)
.showImageOnLoading(R.drawable.test) //设置加载期间的设置的图片
// .displayer(new RoundedBitmapDisplayer(10)) //设置图片为圆角
// .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.build();
}
/**
* @return the mApp
*/
public static ForagingApplication getApp()
{
return mApp;
}
/**
* 得到已经初始化过的ImageLoader
*
* @return the mImagerLoader
*/
public ImageLoader getImagerLoader()
{
return mImagerLoader;
}
/**
* 得到已经初始化过的DisplayImageOptions
*
* @return the mOptions
*/
public DisplayImageOptions getOptions()
{
return mOptions;
}
这样子,这个类就算完成了,然后要在ListView或者gridView里面给ImageView控件设置图片,
ForagingApplication.getApp().getImagerLoader().displayImage(
photosinfo.get(position).largeimage
,<span style="font-family: Arial, Helvetica, sans-serif;">hold.iv, </span>
ForagingApplication.getApp().getOptions());
第一个参数是图片的url,第二个参数是要设置的图片控件,第三个是图片的缓存,防止内存溢出
如果还有不明白的请看这里,会比较详细一点http://blog.csdn.net/yueqinglkong/article/details/27660107