源码地址是https://github.com/loopj/android-smart-image-view,没有sample,本文最后会提供一个sample。
smartimageview提供的主要功能有:
1. 继承ImageView控件,在原生ImageView控件上扩展了多个功能
2. 可以根据url地址加载网络上的一张图片
3. 可以根据uri加载本地手机里面联系人的一张图片
4. 加载图片是放在多线程中,与UI线程并发执行
5. 使用了内存和sd卡缓存图片技术,提高重复加载效率
6. 图片源采用面向接口编程,易于使用者扩展
类图如下:
SmartImageView核心方法:
public void setImage(final SmartImage image, final Integer fallbackResource, final Integer loadingResource, final SmartImageTask.OnCompleteListener completeListener) {
// Set a loading resource
if(loadingResource != null){
setImageResource(loadingResource);
}
// Cancel any existing tasks for this image view
if(currentTask != null) {
currentTask.cancel();
currentTask = null;
}
// Set up the new task
currentTask = new SmartImageTask(getContext(), image);
currentTask.setOnCompleteHandler(new SmartImageTask.OnCompleteHandler() {
@Override
public void onComplete(Bitmap bitmap) {
if(bitmap != null) {
setImageBitmap(bitmap);
} else {
// Set fallback resource
if(fallbackResource != null) {
setImageResource(fallbackResource);
}
}
if(completeListener != null){
completeListener.onComplete(bitmap);
}
}
});
// Run the task in a threadpool
threadPool.execute(currentTask);
}
在加载过程中可以设置默认图片、加载中图片,并且可以设置图片加载完成监听器,此方法会启动一个线程去加载图片,然后在onComplete方法中将图片显示到SmartImageView上去。
【Android之SmartImageView图片控件】下载