我可以动态保存图像并在布局中使用它吗?

时间:2012-08-31 05:58:49

标签: android

我有一个小查询,是否有可能在每次通过互联网启动应用程序时动态获取图像,然后可以使用该图像在UI上显示(通过xml文件)如果有这个请告诉我可以在android和任何示例代码中实现。 谢谢&问候。

3 个答案:

答案 0 :(得分:1)

在这种情况下,最好的方法是通过HTTP GET加载图像,将其存储在Bitmap对象中,并以编程方式注入布局中定义的ImageView元素。

您无法覆盖资源图片,因此无法使用@drawable

您可以使用loadBitmap方法按网址加载图片并将其存储在Bitmap中:How to load an ImageView by URL in Android?

接下来就是将其注入ImageView

ImageView image = (ImageView) findViewById(R.id.image);
Bitmap bitmap = loadBitmap("http://www.android.com/images/logo.png");
image.setImageBitmap(bitmap);

答案 1 :(得分:0)

不可能通过XML。

如果当时没有可用的互联网访问,我建议使用安慰剂位图。下载时使用AsyncTask。

new GetAndSetBitmap.execute(url)

private class GetAndSetBitmap extends AsyncTask<String, Void, Bitmap>
{
   protected Bitmap doInBackground(String... urls)
       {
          Bitmap bitmap = loadBitmap(url[0]);
          // Used the loadBitmap from other answer. Anything goes wrong 
          // load a local resource with the same dimensions.
          return bitmap;
       }
    @Override
       protected void onPostExecute(Bitmap bm)
       {
         yourImageView.setImageBitMap(bm);
       }
}

答案 2 :(得分:0)

Guys找到了更好的解决方案

try {
  ImageView i = (ImageView)findViewById(R.id.image);
  Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
  i.setImageBitmap(bitmap); 
} catch (MalformedURLException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}