注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

姑射道人的博客

博客新地址:nixuchen.com

 
 
 

日志

 
 

防止下载网络图片时listiew显示错乱  

2013-04-10 11:16:54|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
public class DrawableManager {
private final Map<String, Drawable> drawableMap;

   public DrawableManager() {
       drawableMap = new HashMap<String, Drawable>();
   }

   public Drawable fetchDrawable(String urlString) {
       if (drawableMap.containsKey(urlString)) {
           return drawableMap.get(urlString);
       }

       Log.d(this.getClass().getSimpleName(), "image url:" + urlString);
    
           InputStream is = fetch(urlString);
           Drawable drawable = Drawable.createFromStream(is, "src");


           if (drawable != null) {
               drawableMap.put(urlString, drawable);
               Log.d(this.getClass().getSimpleName(), "got a thumbnail drawable: " + drawable.getBounds() + ", "
                       + drawable.getIntrinsicHeight() + "," + drawable.getIntrinsicWidth() + ", "
                       + drawable.getMinimumHeight() + "," + drawable.getMinimumWidth());
           } else {
             Log.w(this.getClass().getSimpleName(), "could not get thumbnail");
           }
           


           return drawable;
       
   }
   
   public void setDrawableOnThread(final Drawable drawable, final ImageView imageView) {
     

       final Handler handler = new Handler() {
           @Override
           public void handleMessage(Message message) {
               imageView.setImageDrawable((Drawable) message.obj);
              
           }
       };

       Thread thread = new Thread() {
           @Override
           public void run() {
               //TODO : set imageView to a "pending" image
              
               Message message = handler.obtainMessage(1, drawable);
               handler.sendMessage(message);
           }
       };
       thread.start();
   }

   public void fetchDrawableOnThread(final String urlString, final ImageView imageView) {
       if (drawableMap.containsKey(urlString)) {
           imageView.setImageDrawable(drawableMap.get(urlString));
       }

       final Handler handler = new Handler() {
           @Override
           public void handleMessage(Message message) {
               imageView.setImageDrawable((Drawable) message.obj);
              
           }
       };

       Thread thread = new Thread() {
           @Override
           public void run() {
               //TODO : set imageView to a "pending" image
               Drawable drawable = fetchDrawable(urlString);
               Message message = handler.obtainMessage(1, drawable);
               handler.sendMessage(message);
           }
       };
       thread.start();
   }

   private InputStream fetch(String urlString){
    HttpGet httpGet = new HttpGet(urlString);
HttpClient httpClient = MyHttpClient.getNewHttpClient();
InputStream is;

try {
HttpResponse response = httpClient.execute(httpGet);
is = response.getEntity().getContent();
return is;
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
      
   }

}
  评论这张
 
阅读(395)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017