安卓 - 如何在运行时下载并使用一张图片?

5
在我的应用程序中,当启动闪屏时,我只是访问一个URL并获取一个XML文件。从该XML文件中,我解析出数据,例如用户名、ID和下载图像的URL。我想要从该URL下载图像,并将其存储在我的应用程序中的特定名称中。我希望在另一个活动中使用相同的图像作为背景。如何下载和存储图像在我的应用程序中?它可以存储在我的应用程序中的哪里,是在raw文件夹还是drawable文件夹中?
在存储名称之前,如何将图像设置为特定活动的背景图像,请帮助我。
2个回答

4
这是从URL下载图像的代码:
```python import requests url = 'your_image_url' response = requests.get(url)
with open('image.jpg', 'wb') as f: f.write(response.content) ```
请注意将 `your_image_url` 替换为您要下载的实际图像的网址。
InputStream in = new URL(image_url).openConnection().getInputStream();
Bitmap bm = BitmapFactory.decodeStream(in);

请注意,此操作应该异步完成(就像在Asynctask中一样)

然后,您可以使用以下方法将位图存储在系统中:

File fullCacheDir = new File(Environment.getExternalStorageDirectory(),cacheDir);
String fileLocalName = name+".JPEG";
File fileUri = new File(fullCacheDir, fileLocalName);
FileOutputStream outStream = null;
outStream = new FileOutputStream(fileUri);
image.compress(Bitmap.CompressFormat.JPEG, 75, outStream);
outStream.flush();

请注意,这只是一个存储图像的示例,还有其他方法。无论如何,您都应该查看文档。

1
只是一个小问题。在File上真的没有必要调用toStringFile类有一个构造函数,看起来像File(File parent, String child) - Kaj

1
如果您想在您的应用中使用它,最好下载该图片并将其保存为Drawable实例,然后在您想要使用的地方使用它。
public static Drawable drawable = null;

//get image from URL and store it in Drawable instance

public void getImageFromURL(final String urlString) {

    Thread thread = new Thread() {
        @Override
        public void run() {
            //TODO : set imageView to a "pending" image
            InputStream is = null;
            try{
            URLConnection urlConn = new URL(urlString).openConnection();

            is= urlConn.getInputStream();
            }catch(Exception ex){}
            drawable = Drawable.createFromStream(is, "src");


        }
    };
    thread.start();
}

设置任何视图的背景图像
void setImage(View myView){
    myView.setBackgroundDrawable(drawable);
}

但是您仍然需要将它存储在某个地方。您如何存储可绘制对象? - Sunny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接