2010-10-25 51 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的副本...但是爲什麼?

回答