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);
}

更多相关文章

  1. 类和 Json对象
  2. 使用Android新式LruCache缓存图片,基于线程池异步加载图片
  3. android清除缓存并获取大小
  4. android 自定义 背景
  5. Android(安卓)studio 文件存储对象与恢复
  6. Android学习笔记(14)————Socket在Android上面的应用
  7. FragmentTabHost QQ 选项卡
  8. Android文件下载程序例子
  9. Android(安卓)文件压缩和解压

随机推荐

  1. TextView关于xml属性用法(待完善)
  2. Android(安卓)Process 优先级
  3. Android(安卓)Android.mk && Application
  4. android中列表选项、单选选项、多选选项
  5. 终于找到一个类似wince 远程桌面控制andr
  6. Android实现button居中的方法
  7. Android(安卓),,Menu
  8. Error in an XML file: aborting build.
  9. Mars视频笔记——ExpandableListActivity
  10. Android(安卓)中如何处理双击事件