2010-10-25 50 views
0

我目前正在尝试创建从Internet加载的图片库。Android - 动态图片加载问题

我正在使用标准Gallery对象,使用自定义适配器和自定义ImageView。一切工作都很好,希望下载图片。

我正在使用异步任务来做到这一点(我加载时显示缩略图)。

加载缩略图效果非常好,但对于“大”图像(每个大约50k)并不真实。

我使用这个加载图片:

private class DownloadImageTask extends AsyncTask<String,Void,Drawable>{ 

    @Override 
    protected Drawable doInBackground(String... arg0) { 
     URL url; 
     InputStream is; 
     Drawable d=null; 
     try { 
      url = new URL(arg0[0]); 
      is = (InputStream) url.getContent(); 
      d = Drawable.createFromStream(is, "src"); 
      return d; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    protected void onPostExecute(Drawable result) { 
     setImage(result); 
    } 

}

问题是,相当随意,但出来的10 8倍左右,我在我的日志“10-25得到了以下信息14:58:18.764:DEBUG/skia(11294):--- decoder-> decode返回false“,然后我的drawable为null。

我想说我的代码存在问题,但为什么它有时会工作?或不?

我试图把WebViews放入我的画廊,只加载图片的URL,它的工作非常好,并且快速地下载图片,但是显示效果相当混乱(速度较慢而且没有响应,图片不是以屏幕为中心......)。

我该怎么办?

我不明白为什么有时我的输入流不起作用。只是有时。如果尝试足够努力(就像循环一样),经过几次尝试后,它总是可以工作的,但这确实是一个非常难看的解决方案。

有没有办法用webviews下载图片并获取它们?我尝试过类似的东西(从webview获取getCache()或capturePicture()),但它没有显示任何东西...

任何想法?有任何想法吗?

非常感谢!

编辑: 呃..它每次都在工作,当我意识到inputStream的副本...但是为什么?

回答