ImageLoader的基本使用

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值