0

我現在有一個ArrayList如下:如何將一串url的字符串轉換爲drawable?

private void loadImages() { 
     images = new ArrayList<>(); 

     images.add(getResources().getDrawable(R.drawable.imag1)); 
     images.add(getResources().getDrawable(R.drawable.imag2)); 
     images.add(getResources().getDrawable(R.drawable.imag3)); 
} 

我希望能夠到一個URL轉換成這些可繪製這樣的:其次

private void loadImages() { 
      images = new ArrayList<>(); 

      images.add(getResources().getDrawable(drawable1)); 
      images.add(getResources().getDrawable(drawable2)); 
...etc } 

drawable1 = "http.someimage.com/image.png" 
drawable2 = "http.someimage.com/newimage.png" 

有任何簡單的方法來解決這個問題?我一定要堅持drawables,但我無法找到任何方法將url轉換爲可繪製的 任何想法?謝謝!

回答

1

如果你有一個圖片的網址,你需要先下載它。

您無法將URL「轉換」爲繪圖。

你需要的東西是這樣的:

URL url = new URL("http.someimage.com/image.png"); 
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

然後,如果你需要將圖像添加到一個ImageView的對象,你可以調用方法.setImageBitmap(BMP)。 否則有辦法從位圖 中提取Drawable對象,您可以查看此前的answer。那麼一旦你有可繪製的,你可以將它添加到你的數組列表。

希望我把你的問題的權利

P.S:千萬不要做這個主線程,因爲它是一個網絡操作!使用一個線程或asynctask

+1

我確實看過這個答案,但沒有爲我工作的預期。可以讓我看看我的代碼爲arraylist幾個圖像。 –

+0

一旦獲得位圖,您需要將其轉換爲Drawable對象。爲了讓它成爲兩張圖片,你只需要將我上面發佈的代碼片段加倍。將位圖轉換爲可繪製的,你可以使用[鏈接](https://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html) – inno15

+0

補充說,在asynctask幫助,謝謝! –