异步加载图片

来源:互联网 发布:vivox9s有什么缺点知乎 编辑:程序博客网 时间:2024/06/15 09:00
String imgurl = xxxx;


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);
    }


}

0 0
原创粉丝点击