我不認爲它是重複的,因爲我發現的所有答案都是在幾年前提出的。所以,我從加載URL位圖,然後做這種方式:android - 從url設置佈局背景
currentView.setBackground(new BitmapDrawable(result));
...其中「結果」是位圖。
但是「BitmapDrawable」不推薦使用,它不適用於API 22或21. 是否有其他方法將位圖轉換爲Drawable或從URL而不是Bitmap加載drawable?
我不認爲它是重複的,因爲我發現的所有答案都是在幾年前提出的。所以,我從加載URL位圖,然後做這種方式:android - 從url設置佈局背景
currentView.setBackground(new BitmapDrawable(result));
...其中「結果」是位圖。
但是「BitmapDrawable」不推薦使用,它不適用於API 22或21. 是否有其他方法將位圖轉換爲Drawable或從URL而不是Bitmap加載drawable?
由於文檔告訴你 - 不要使用已棄用
new BitmapDrawable(result)
而是使用API 18版
new BitmapDrawable(getActivity().getResources(), result)
假設你支持API 18+,否則,你需要處理這兩個版本取決於運行時API。
我試過了,它不再被棄用,但我的Nexus 5仿真器上的佈局背景圖片仍然是不可見的(背景是灰色,而不管默認背景顏色是黑色)。所以在這種情況下可能是什麼原因? –
你確定位圖已被下載並正確處理嗎?您可以使用Android Studio調試器檢查位圖的預覽。 – Malthan
我的三星4.2.2沒關係。問題僅在最高的API上。 (實際上,有些問題出現在我運行的所有設備上,但這可能是另一個主題:)) –
使用Glide從URL加載圖像,Glide是一個快速高效的開源Android媒體管理和圖像加載框架,將媒體解碼,內存和磁盤緩存以及資源池整合到一個簡單易用的界面中。
Glide負責儘可能平滑地滾動任何圖像列表,並接收,調整大小和顯示遠程圖像。
欲瞭解更多信息,請參閱here
添加下面的依賴關係build.gradle
:
dependencies {
compile 'com.github.bumptech.glide:glide:3.6.0'
compile 'com.android.support:support-v4:19.1.0'
}
如項目https://github.com/chrisbanes/cheesesquare
如用法:
@Override
public void onCreate(Bundle savedInstanceState) {
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
}
在load
方法只需傳遞圖像的URL,並在into
只是通過視圖,在你的情況下currentview。 對於您的場景:
Glide.with(this).load("http://goo.gl/gEgYUd").into(currentView);
無法工作:(RelativeLayout無法投射到ImageView –
是的,您無法提供imageView到Glide – Psypher
但是,將其添加到佈局本身,沒有imageView? –
爲什麼如果答案是從幾年前開始就很重要? – Pztar
你可以使用'畢加索'來做到這一點。這裏:http://stackoverflow.com/questions/26207716/add-background-image-to-android-listview-using-picasso –
可能重複的[如何從android中的URL獲取圖像](http:// stackoverflow。 com/questions/6407324 /如何獲取圖像從網址在Android) – Pztar