我想使ImageView在網站上顯示圖像。因此,我創建了一個新的ImageView並執行imgView.setImageURI(uri);
設置Uri時出現錯誤的位圖錯誤
當我啓動應用程序時,圖像不出現,並且出現錯誤「resolveUri在壞Bitmap Uri(uri)上失敗」。
關於如何解決這個問題的任何想法?
我想使ImageView在網站上顯示圖像。因此,我創建了一個新的ImageView並執行imgView.setImageURI(uri);
設置Uri時出現錯誤的位圖錯誤
當我啓動應用程序時,圖像不出現,並且出現錯誤「resolveUri在壞Bitmap Uri(uri)上失敗」。
關於如何解決這個問題的任何想法?
嗯..你需要下載圖像,然後將其設置爲位圖。 這是許多例子之一。 http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
如果它不是內容URI,this link可能會有所幫助。似乎表明imgView.setImageURI()
不應用於常規URI。在相關位中複製:
是的,
ImageView.setImageURI(ContentURI uri)
適用,但它適用於Android平臺特有的內容URI,而不是指定Internet資源的URI。該約定適用於不能通過ContentProvider的Cursor方法直接公開的二元對象(例如圖像)。相反,String引用用於引用不同的內容URI,可以通過針對內容提供者的單獨查詢來解析該內容URI。 setImageURI方法僅僅是爲你執行這些步驟的一個包裝。我測試了
setImageView
的這種用法,並且它按預期工作。不過,對於您的使用,我會看看BitmapFactory.decodeStream()
和URL.openStream()
。
還要使這個答案自成體系,從另一個帖子在該鏈接的代碼示例,展示瞭如何做到這一點:
private Bitmap getImageBitmap(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e(TAG, "Error getting bitmap", e);
}
return bm;
}
我沒有測試此代碼,我只是偏執狂和喜歡,以確保SO答案是有用的,即使網絡上的其他網站消失:-)
首先,您應該下載圖像並將其保存在您的device(sdcard or memory)
中。 然後,獲取其文件路徑,使用Uri.parse(filePath)
最終將路徑轉換爲uri ,請致電ImageView
的setImageURI(Uri)
填寫完整。 - 我用這種方式來達到我的目的,並且存在一個錯誤:如果圖像很大(可能超過1Mb左右,可能會報告出現「Memeroy異常」!!!)