在andbase中提供了图片余部加载与下载的实例,包括内存缓存与文件缓存结合的用法,andbase中现在的处理策略是 :
第一次下载:
public static HashMap<String, SoftReference<Bitmap>> imageCache = new HashMap<String, SoftReference<Bitmap>>();放这个里面,同时写文件到sd卡,然后读取的时候 先从imageCache 中获取,如果没有去sd中读取,然后放回imageCache,暂时还未对imageCache进行管理,预计下个版本中1.6以上将采用限制缓存大小来维护缓存中的图片,防止内存不足,具体采取的算法,敬请期待。
在1.5的demo中:图片列表会有卡顿的现象,这不是因为andbase的原因 ,是adapter中的这行代码导致holder.itemsIcon.setImageBitmap(AbFileUtil.getBitmapFormSrc("image/image_loading.png"));
大家可以替换成应用中的图片,我用的是打包里面的,所以会慢很多。
替换成:
holder.itemsIcon.setImageResource(R.drawable.image_loading);
下面看下怎么下载图片:
if(!AbStrUtil.isEmpty(imageUrl)){
//设置下载项
AbImageDownloadItem item = new AbImageDownloadItem();
//设置显示的大小
item.width = 80;
item.height = 80;
//设置为缩放
item.type = AbConstant.SCALEIMG;
item.imageUrl = imageUrl;
//holder.itemsIcon.setImageBitmap(AbFileUtil.getBitmapFormSrc("image/image_loading.png"));
holder.itemsIcon.setImageResource(R.drawable.image_loading);
//下载完成后更新界面
item.callback = new AbImageDownloadCallback() {
@Override
public void update(Bitmap bitmap, String imageUrl) {
if(bitmap!=null){
holder.itemsIcon.setImageBitmap(bitmap);
}else{
holder.itemsIcon.setImageResource(R.drawable.image_error);
}
}
};
mAbImageDownloadQueue.download(item);
}else{
holder.itemsIcon.setImageResource(R.drawable.image_no);
}