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

来源:互联网 发布:如何建立网络销售平台 编辑:程序博客网 时间:2024/06/06 19:18

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缓存的大小,默认为无限大,缓存策略为lruconfig.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 controllingpauseOnScroll Whether pause ImageLoader during touch scrollingpauseOnFling Whether pause ImageLoader during fling


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

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

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

ImageLoader.getInstance().stop();


另:一些实现参考记录

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

@Overridepublic 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
原创粉丝点击