Android组件Android-Universal-Image-Loader学习

1.项目地址 本地下载

2.参考博文

Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

Android-Universal-Image-Loader是一个强大的、可定制的图片缓存框架。它实现了缓存的级别,内存缓存、硬盘(sd)缓存。提供了多种缓存策略,也可以自己定义;提供了显示的大小和形状(是否圆角);提供了显示的动画效果(fade)。从Github中下载的zip中,包含了jar包和例子程序。例子程序包括了在listview、gridview、viewpager中显示。其中的一些实现很有参考意义。

要使用先要初始化,例程中是在Application中完成初始化,如下:

	public static void initImageLoader(Context context) {
		// This configuration tuning is custom. You can tune every option, you may tune some of them,
		// or you can create default configuration by
		//  ImageLoaderConfiguration.createDefault(this);
		// method.
		ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
		config.threadPriority(Thread.NORM_PRIORITY - 2);
		config.denyCacheImageMultipleSizesInMemory();	//设置是否对同一url但是不同大小的图片进行多种缓存,deny为拒绝
		config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
		config.diskCacheSize(50 * 1024 * 1024); // 50 MiB,设置disk缓存的大小,默认为无限大,缓存策略为lru
		config.tasksProcessingOrder(QueueProcessingType.LIFO);
		config.writeDebugLogs(); // Remove for release app

		// Initialize ImageLoader with configuration.
		ImageLoader.getInstance().init(config.build());
	}
当然,可以使用默认的构造,如下:

		ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
		ImageLoader.getInstance().init(configuration);

接下来,就可以获取ImageLoader实例来显示图片了。

ImageLoader.getInstance().displayImage(url1, mImageView1, mDisplayImageOptions);

调用的方法是displayImage(),该方法有好几个重载的方法。但最后都是跳转到参数最齐全的方法中:

	public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options,
			ImageLoadingListener listener, ImageLoadingProgressListener progressListener)

第二个参数可以是ImageView类型,另一个重载方法。其中,各个参数从形参名中可以较清晰的知道其作用。

其中,DisplayImageOptions参数,例子中可以参考的写法及注释如下:

			options = new DisplayImageOptions.Builder()
					.showImageForEmptyUri(R.drawable.ic_empty)	//空url时的显示
					.showImageOnFail(R.drawable.ic_error)	//失败时的显示
					.resetViewBeforeLoading(true)	//
					.cacheOnDisk(true)	//是否缓存到sd卡中
					.imageScaleType(ImageScaleType.EXACTLY)	//缩放形式
					.bitmapConfig(Bitmap.Config.RGB_565)	//
					.considerExifParams(true)
					.displayer(new FadeInBitmapDisplayer(300))	//设置显示的动画属性
					.build();
			options = new DisplayImageOptions.Builder()
					.showImageOnLoading(R.drawable.ic_stub)		//正在加载时显示的图片
					.showImageForEmptyUri(R.drawable.ic_empty)
					.showImageOnFail(R.drawable.ic_error)
					.cacheInMemory(true)
					.cacheOnDisk(true)
					.considerExifParams(true)
					.displayer(new RoundedBitmapDisplayer(20)).build();	//圆角


并不是每一项都要写,可以根据需要选择。第四个参数listener可以监听图片的加载过程,第五个参数可以监听图片的加载进度,配合progress可以实现加载进度条。例子中的GridView中每一项即有一个水平的图片加载进度条,效果很不错。

在listview和gridview中可以设置在滚动或抛掷时是否加载图片:

		listView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), pauseOnScroll, pauseOnFling));

PauseOnScrollListener构造方法的参数的解释如下:

public PauseOnScrollListener(ImageLoader imageLoader, boolean pauseOnScroll, boolean pauseOnFling)
imageLoader ImageLoader instance for controlling
pauseOnScroll Whether pause ImageLoader during touch scrolling
pauseOnFling Whether pause ImageLoader during fling


也可以清除内存和硬盘(sd卡)中的缓存:

	ImageLoader.getInstance().clearMemoryCache();
	ImageLoader.getInstance().clearDiskCache();

可以取消正在进行的任务:

ImageLoader.getInstance().stop();


另:一些实现参考记录

1. 之前监听回退键,是监听keydown来实现的,这里它用到了一个回调方法,很方便:

@Override
	public void onBackPressed() 


2. 它实现了选项item的复选框,方法如下:

		MenuItem pauseOnScrollItem = menu.findItem(R.id.item_pause_on_scroll);
		pauseOnScrollItem.setVisible(true);
		pauseOnScrollItem.setChecked(pauseOnScroll);	//菜单项复选框实现

3.它的BaseAdapter中的getView方法好像是与android文档中相同的思路,可以参考。久不写,就淡忘了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值