public class AsyncImageLoader {
imageCache = new HashMap<String,SoftReference<Drawable>>();
}
public Drawable loadImage(final String url,final ImageView image,final callBack back){
//查询缓存中是否已经缓存该图片
if(imageCache.containsKey(url)){
SoftReference<Drawable> drawable = imageCache.get(url);
Drawable draw = drawable.get();
return draw;
}
final Handler handler = new Handler(){
public void handleMessage(Message msg){
back.imageLoad((Drawable)msg.obj,url,image);
}
public void run(){
Drawable drawa = Utils.getInstance().getDrawablefromUrl(url);
imageCache.put(url, new SoftReference(drawa));
Message msg = handler.obtainMessage(0,drawa);
handler.sendMessage(msg);
}
}.start();
return null;
}
public interface callBack{
public void imageLoad(Drawable drawable,String url,ImageView image);//通过回调函数对结果进行处理
}
}
//将下载的图片保存到软引用中
private HashMap<String,SoftReference<Drawable>> imageCache;
public AsyncImageLoader(){imageCache = new HashMap<String,SoftReference<Drawable>>();
}
public Drawable loadImage(final String url,final ImageView image,final callBack back){
//查询缓存中是否已经缓存该图片
if(imageCache.containsKey(url)){
SoftReference<Drawable> drawable = imageCache.get(url);
Drawable draw = drawable.get();
return draw;
}
final Handler handler = new Handler(){
public void handleMessage(Message msg){
back.imageLoad((Drawable)msg.obj,url,image);
}
};
//下载图片
new Thread(){public void run(){
Drawable drawa = Utils.getInstance().getDrawablefromUrl(url);
imageCache.put(url, new SoftReference(drawa));
Message msg = handler.obtainMessage(0,drawa);
handler.sendMessage(msg);
}
}.start();
return null;
}
public interface callBack{
public void imageLoad(Drawable drawable,String url,ImageView image);//通过回调函数对结果进行处理
}
}