易采站长站为您分析Android实现ListView异步加载图片的方法,以实例形式较为详细的分析了Android中ListView异步加载图片的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了Android实现ListView异步加载图片的方法。。具体如下:
ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,不用让用户等待下去,下面就说实现方法,先贴上主方法的代码:
- package cn.wangmeng.test; import java.io.IOException;
- import java.io.InputStream; import java.lang.ref.SoftReference;
- import java.net.MalformedURLException; import java.net.URL;
- import java.util.HashMap; import android.graphics.drawable.Drawable;
- import android.os.Handler; import android.os.Message;
- 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) {










