2015-07-03 85 views
0

我不認爲它是重複的,因爲我發現的所有答案都是在幾年前提出的。所以,我從加載URL位圖,然後做這種方式:android - 從url設置佈局背景

currentView.setBackground(new BitmapDrawable(result)); 

...其中「結果」是位圖。

但是「BitmapDrawable」不推薦使用,它不適用於API 22或21. 是否有其他方法將位圖轉換爲Drawable或從URL而不是Bitmap加載drawable?

+0

爲什麼如果答案是從幾年前開始就很重要? – Pztar

+0

你可以使用'畢加索'來做到這一點。這裏:http://stackoverflow.com/questions/26207716/add-background-image-to-android-listview-using-picasso –

+0

可能重複的[如何從android中的URL獲取圖像](http:// stackoverflow。 com/questions/6407324 /如何獲取圖像從網址在Android) – Pztar

回答

0

由於文檔告訴你 - 不要使用已棄用

new BitmapDrawable(result) 

而是使用API​​ 18版

new BitmapDrawable(getActivity().getResources(), result) 

假設你支持API 18+,否則,你需要處理這兩個版本取決於運行時API。

+0

我試過了,它不再被棄用,但我的Nexus 5仿真器上的佈局背景圖片仍然是不可見的(背景是灰色,而不管默認背景顏色是黑色)。所以在這種情況下可能是什麼原因? –

+0

你確定位圖已被下載並正確處理嗎?您可以使用Android Studio調試器檢查位圖的預覽。 – Malthan

+0

我的三星4.2.2沒關係。問題僅在最高的API上。 (實際上,有些問題出現在我運行的所有設備上,但這可能是另一個主題:)) –

0

使用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); 
+0

無法工作:(RelativeLayout無法投射到ImageView –

+0

是的,您無法提供imageView到Glide – Psypher

+0

但是,將其添加到佈局本身,沒有imageView? –