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帮助,谢谢! –

相关问题