Android实现图片的异步载入显示
发布时间:2020-12-15 03:20:20 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.InputStream;import java.lang.ref.SoftReference;import java.net.URL;import java.util.HashMap;import android.graphics.drawable.
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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; } } 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,String imageUrl) { imageView.setImageDrawable(imageDrawable); } }); if(drawable == null){ viewUserIcon.setImageResource(R.drawable.portrait); }else{ viewUserIcon.setImageDrawable(drawable); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读