标签:android style http color io os ar java for
前言:可从 https://github.com/nostra13/Android-Universal-Image-Loader 下载三级缓存机制的开源框架。下文简单介绍该框架中主要的常用方法,掌握这些方法,基本就可应对多数图片下载的需求。ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.stop(); // 停止加载图片 imageLoader.clearMemoryCache(); // 清除内存缓存 imageLoader.clearDiscCache(); // 清除SD卡中的缓存2.在Adapter的getView( ) 方法中,显示ImageView的图片的imageLoader.displayImage( )方法:
ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
/**
* 显示图片
* 参数1:图片url
* 参数2:显示图片的控件
* 参数3:显示图片的设置
* 参数4:监听器
*/
imageLoader.displayImage(imageUrl, holder.image, options, animateFirstListener);
// 将图片显示任务增加到执行池,图片将被显示到ImageView当轮到此ImageView
imageLoader.displayImage(imageUrl, imageView, options);
// 参数传入匿名内部类
imageLoader.displayImage(imageUrl, imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
// 可显示进度条
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) { // 获取图片失败类型
case IO_ERROR: // 文件I/O错误
message = "Input/Output error";
break;
case DECODING_ERROR: // 解码错误
message = "Image can't be decoded";
break;
case NETWORK_DENIED: // 网络延迟
message = "Downloads are denied";
break;
case OUT_OF_MEMORY: // 内存不足
message = "Out Of Memory error";
break;
case UNKNOWN: // 原因不明
message = "Unknown error";
break;
}
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// 不显示圆形进度条
}
}); 3.上述2.中imageLoader.displayImage( )方法的参数options:DisplayImageOptions options; // DisplayImageOptions是用于设置图片显示的类
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_stub) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_empty) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_error) // 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true) // 设置下载的图片是否缓存在内存中
.cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中
.bitmapConfig(Bitmap.Config.RGB_565) //设置图片的解码类型
.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
.build(); // 创建配置过得DisplayImageOption对象4.上述2.中imageLoader.displayImage( )方法的参数animateFirstListener:/**
* 图片加载第一次显示监听器
* @author Administrator
*
*/
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
// 是否第一次显示
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
// 图片淡入效果
FadeInBitmapDisplayer.animate(imageView, 500);
displayedImages.add(imageUri);
}
}
}
}5.该框架主要是以上方法,下面的也可了解下:listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, true, false)); //一堆图片链接 com.nostra13.example.universalimageloader.Constants.IMAGES; // Intent中传递Extra参数的键 :"com.nostra13.example.universalimageloader.IMAGES"; com.nostra13.example.universalimageloader.Constants.Extra.IMAGES // Intent中传递Extra参数的键 :"com.nostra13.example.universalimageloader.IMAGE_POSITION" com.nostra13.example.universalimageloader.Constants.Extra.IMAGE_POSITION
Android开源框架ImageLoader:加载图片的三级缓存机制
标签:android style http color io os ar java for
原文地址:http://blog.csdn.net/berber78/article/details/39780929