• android异步加载图片


    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<String, SoftReference<Drawable>> imageCache;
       
        public AsyncImageLoader(){
            imageCache = new HashMap<String, SoftReference<Drawable>>();
        }
       
        public Drawable loadDrawable(final String imageUrl,final ImageView imageView,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(){
                @Override
                public 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>(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() {
        @Override
        public void imageLoaded(Drawable imageDrawable, ImageView imageView,String imageUrl) {
        imageView.setImageDrawable(imageDrawable);
            }
    });
    if(drawable == null){风之境地 java-javascript 蘑菇街女装
        viewUserIcon.setImageResource(R.drawable.portrait);
    }else{
        viewUserIcon.setImageDrawable(drawable);
    }

  • 相关阅读:
    JAVA EE 第一阶段项目问题
    车辆管理系统之开始自己的任务(三)
    车辆管理系统之搭建框架 添加必要的数据 安装svn(二)
    车辆管理系统之分析信息建表(一)
    牛客问题
    记录---base64
    JAVA EE 第一阶段考试
    简单ssh框架整合
    Struts2拦截器
    Struts2文件上传
  • 原文地址:https://www.cnblogs.com/sky7034/p/2030074.html
Copyright © 2020-2023  润新知