Android实现ListView异步加载图片的方法

2019-12-10 20:00:59于海丽

易采站长站为您分析Android实现ListView异步加载图片的方法,以实例形式较为详细的分析了Android中ListView异步加载图片的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Android实现ListView异步加载图片的方法。。具体如下:

ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,不用让用户等待下去,下面就说实现方法,先贴上主方法的代码:

 

 
  1. package cn.wangmeng.test;  import java.io.IOException; 
  2. import java.io.InputStream;  import java.lang.ref.SoftReference; 
  3. import java.net.MalformedURLException;  import java.net.URL; 
  4. import java.util.HashMap;  import android.graphics.drawable.Drawable; 
  5. import android.os.Handler;  import android.os.Message; 
  6. public class AsyncImageLoader {  private HashMap<String, SoftReference<Drawable>> imageCache; 
  7. public AsyncImageLoader() {  imageCache = new HashMap<String, SoftReference<Drawable>>(); 
  8. }  public Drawable loadDrawable(final String imageUrl, final ImageCallback imageCallback) { 
  9. if (imageCache.containsKey(imageUrl)) {  SoftReference<Drawable> softReference = imageCache.get(imageUrl); 
  10. Drawable drawable = softReference.get();  if (drawable != null) { 
  11. return drawable;  } 
  12. }  final Handler handler = new Handler() { 
  13. public void handleMessage(Message message) {  imageCallback.imageLoaded((Drawable) message.obj, imageUrl); 
  14. }  }; 
  15. new Thread() {  @Override 
  16. public void run() {  Drawable drawable = loadImageFromUrl(imageUrl); 
  17. imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));  Message message = handler.obtainMessage(0, drawable); 
  18. handler.sendMessage(message);  } 
  19. }.start();  return null; 
  20. }  public static Drawable loadImageFromUrl(String url) {