阅读更多

 

package cn.com.mzba.service;import java.io.InputStream;import java.lang.ref.SoftReference;import java.net.URL;import java.util.HashMap;import android.graphics.drawable.Drawable;import android.os.Handler;import android.os.Message;import android.widget.ImageView;/** * 实现图片的异步载入显示 * @author kandanle * */public class AsyncImageLoader {/** * 软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。 */private HashMap> imageCache;public AsyncImageLoader(){imageCache = new HashMap>();}public Drawable loadDrawable(final String imageUrl,final ImageView imageView,final ImageCallback imagecallback){if(imageCache.containsKey(imageUrl)){//从缓存中读取SoftReference softReference = imageCache.get(imageUrl);Drawable drawable = softReference.get();if(drawable != null){return drawable;}}final Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);imagecallback.imageLoaded((Drawable)msg.obj, imageView, imageUrl);}};new Thread(){public void run() {Drawable drawable = loadImageFromUrl(imageUrl);imageCache.put(imageUrl, new SoftReference(drawable));Message message = handler.obtainMessage(0, drawable);handler.sendMessage(message);}}.start();return null;}public static Drawable loadImageFromUrl(String urlPath){URL url;InputStream is = null;try{url = new URL(urlPath);is = (InputStream)url.getContent();}catch(Exception e){e.printStackTrace();}Drawable drawable = Drawable.createFromStream(is, "src");return drawable;}}

 

 

 

package cn.com.mzba.service;import android.graphics.drawable.Drawable;import android.widget.ImageView;public interface ImageCallback {    public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl);}

 

 

使用例子:

 

Drawable drawable = asyncImageLoader.loadDrawable(weiboInfo.getUserIcon(), viewUserIcon, new ImageCallback() {@Overridepublic void imageLoaded(Drawable imageDrawable, ImageView imageView,String imageUrl) {imageView.setImageDrawable(imageDrawable);        }});if(drawable == null){viewUserIcon.setImageResource(R.drawable.portrait);}else{viewUserIcon.setImageDrawable(drawable);}

更多相关文章

  1. 类和 Json对象
  2. android之网络请求框架OKhttp、原生http请求
  3. android TabHost 对象报错
  4. Android(安卓)中 上下文Context理解
  5. Android(安卓)Gson类型转换错误解决 com.google.gson.internal.L
  6. android SDK 源码 -----建造这模式(生成器模式)
  7. Android(安卓)wifi的WifiInfo对象详解
  8. android htttp网络通信
  9. Android(安卓)系统图标

随机推荐

  1. php实现性能优化
  2. 关于php中变量的初始化以及赋值方式的介
  3. 通过header函数设置响应头解决php跨域问
  4. PHP安装BCMath扩展
  5. 浅析PHP类的自动加载和命名空间
  6. 关于在php中使用curl发送get请求时参数传
  7. 基于AIML的PHP聊天机器人
  8. PHP多任务秒级定时器的实现方法
  9. 四种好用的PHP自定义加密函数(可逆/不可逆
  10. php实现上传图片功能