Android开发知识集

Android图片加载之ImageLoader

2017-03-30  本文已影响152人  专属守护

ImageLoader

特征:

1、多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等

2、支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置

3、支持图片的内存缓存,文件系统缓存或者SD卡缓存

4、根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存

5、较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片

6、支持图片下载过程的监听

7、提供在较慢的网络下对图片进行加载

简单使用:

1、使用ImageLoader的loadImage()方法来加载网络图片

ImageLoader.getInstance().loadImage(imageUrl, new ImageLoadingListener() {

@Override

public void onLoadingStarted(String imageUri, View view) {

}

@Override

public void onLoadingFailed(String imageUri, View view,

FailReason failReason) {

}

@Override

public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

mImageView.setImageBitmap(loadedImage);

}

@Override

public void onLoadingCancelled(String imageUri, View view) {

}

});

2、DisplayImageOptions,他可以配置一些图片显示的选项,比如图片在加载中ImageView显示的图片,是否需要使用内存缓存,是否需要使用文件缓存

//显示图片的配置

DisplayImageOptions options = new DisplayImageOptions.Builder()

.cacheInMemory(true)

.cacheOnDisk(true)

.bitmapConfig(Bitmap.Config.RGB_565)

.build();

ImageLoader.getInstance().loadImage(imageUrl, mImageSize, options, new SimpleImageLoadingListener(){

@Override

public void onLoadingComplete(String imageUri, View view,

Bitmap loadedImage) {

super.onLoadingComplete(imageUri, view, loadedImage);

mImageView.setImageBitmap(loadedImage);

}

});

3、使用displayImage()比使用loadImage()方便很多,也不需要添加ImageLoadingListener接口,我们也不需要手动设置ImageView显示Bitmap对象,直接将ImageView作为参数传递到displayImage()中就行了

DisplayImageOptions options = new DisplayImageOptions.Builder()

.showImageOnLoading(R.drawable.ic_stub)

.showImageOnFail(R.drawable.ic_error)

.cacheInMemory(true)

.cacheOnDisk(true)

.bitmapConfig(Bitmap.Config.RGB_565)

.build();

ImageLoader.getInstance().displayImage(imageUrl, mImageView, options);

4、使用displayImage()方法 他会根据控件的大小和imageScaleType来自动裁剪图片

5、在加载网络图片的时候,经常有需要显示图片下载进度的需求,Universal-Image-Loader当然也提供这样的功能,只需要在displayImage()方法中传入ImageLoadingProgressListener接口就行了

imageLoader.displayImage(imageUrl, mImageView, options, new SimpleImageLoadingListener(), new ImageLoadingProgressListener() {

@Override

public void onProgressUpdate(String imageUri, View view, int current,

int total) {

}

});

6、使用Universal-Image-Loader框架不仅可以加载网络图片,还可以加载sd卡中的图片,Content provider等,使用也很简单,只是将图片的url稍加的改变下就行了,下面是加载文件系统的图片

ImageLoader库就先介绍这些,如果对于其他的图片加载库有兴趣可以看看我的其他博客

上一篇下一篇

猜你喜欢

热点阅读