异步加载图片
来源:互联网 发布:vivox9s有什么缺点知乎 编辑:程序博客网 时间:2024/06/15 09:00
Drawable cachedImage = asyncImageLoader
.loadDrawable(imgurl,
new ImageCallback() {
@Override
public void imageLoaded(
Drawable imageDrawable,
String imageUrl) {
}
});
if (cachedImage == null) {
xx.setImageDrawable(getResources()
.getDrawable(
R.drawable.xxx));
} else {
xx.setImageDrawable(cachedImage);
BitmapDrawable bd = (BitmapDrawable) cachedImage;
Bitmap bitmap = bd.getBitmap();
File file2 = new File(filepath);
FileOutputStream out = new FileOutputStream(
file2);
bitmap.compress(
Bitmap.CompressFormat.PNG, 100,
out);
}
//主要类
public class AsyncImageLoader {
private HashMap<String, SoftReference<Drawable>> imageCache;
public AsyncImageLoader() {
imageCache = new HashMap<String, SoftReference<Drawable>>();
}
public Drawable loadDrawable(final String imageUrl, final ImageCallback imageCallback) {
if (imageCache.containsKey(imageUrl)) {
SoftReference<Drawable> softReference = imageCache.get(imageUrl);
Drawable drawable = softReference.get();
if (drawable != null) {
return drawable;
}
}
final Handler handler = new Handler() {
public void handleMessage(Message message) {
imageCallback.imageLoaded((Drawable) message.obj, imageUrl);
}
};
new Thread() {
@Override
public void run() {
Drawable drawable = loadImageFromUrl(imageUrl);
imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));
Message message = handler.obtainMessage(0, drawable);
handler.sendMessage(message);
}
}.start();
return null;
}
public static Drawable loadImageFromUrl(String url) {
URL m;
InputStream i = null;
try {
m = new URL(url);
i = (InputStream) m.getContent();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Drawable d = Drawable.createFromStream(i, "src");
return d;
}
public interface ImageCallback {
public void imageLoaded(Drawable imageDrawable, String imageUrl);
}
}
- 异步加载图片
- 异步加载图片
- ajax异步加载图片
- android异步加载图片
- 异步图片加载实例
- android 异步加载图片
- 图片异步加载
- list 异步加载图片
- 异步加载本地 图片
- UITableView 异步加载图片
- android异步加载图片
- inputstream 异步加载图片
- iPhone 异步加载图片
- android异步加载图片
- 图片的异步加载
- 异步图片加载控件
- uiimageview 异步加载图片
- UITableView异步加载图片
- 花生壳建站全过程
- 《apue2e》(Unix环境高级编程——第二版)学习心得
- 多线程基本概念
- 数据挖掘十大经典算法
- 进入MFC讲坛的前言(三)
- 异步加载图片
- awk 中 利用shell命令和管道 捕捉返回内容
- HBase简介(很好的梳理资料)
- 关于VC中LineDDA函数的调用问题
- HTC EVO 3D GSM版 ROOT教程以及相关工具下载
- C语言位域-编程之美之中国将帅问题
- 【android开发】手写签名系统的设计与实现之实现画笔设置(四)
- 使用Java中的泛型
- HTC G17刷Recovery、刷机详细教程