如何将 url 的字符串转换为可绘制对象?

how do I transform a string of url's into 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 转换为这些可绘制对象,以便:

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

接着是

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

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

有什么简单的方法可以解决这个问题吗?我绝对想坚持使用可绘制对象,但我找不到任何方法将 url 转换为可绘制对象 有任何想法吗?谢谢!

如果您有URL的图片需要先下载。

您不能 "convert" 将 URL 放入可绘制对象中。

你需要这样的东西:

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

然后如果您需要将图像添加到ImageView 对象中,您可以调用方法.setImageBitmap(bmp)。 否则有办法从 Bitmap 中提取一个 Drawable 对象 您可以查看之前的 answer。然后一旦你有了可绘制对象,你就可以将它添加到你的数组列表中。

希望我答对了你的问题

P.S.: 一定不要在主线程上做这个,因为它是一个网络操作!使用线程或异步任务