Android开源项目 Universal imageloader 源码研究之项目框架
本文主要了解Universal imageloader 源码结构 大部分都是UML图形方式 观察项目框架。
- 基本客户化接口
- 基本UML类图
基本客户化接口
初始化配置
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs();// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
}
配置参数options
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)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
最后 ImageLoader使用
ImageLoader.getInstance()
.displayImage(IMAGE_URLS[0], holder.imageView, options, new SimpleImageLoadingListener() {
@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) {
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
}
});
基本类图
缓存
包括磁盘和内存缓存
Loading显示
View包装器
客户化接口
可以在存入缓存和显示图片之前处理Bitmap
options = new DisplayImageOptions.Builder().
preProcessor(preProcessor).
postProcessor(postProcessor);
//进入缓存之前
BitmapProcessor preProcessor = new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return null;
}
};
//显示给ImageView 之前处理
BitmapProcessor postProcessor = new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return null;
}
};
项目源码结构
基本结构就是这样。