我有一个小问题,是否可以在每次通过 Internet 启动应用程序时动态获取图像,然后该图像可用于在 UI 上显示(通过 xml 文件)请让我知道这是否可以实现在 android 和任何示例代码中。感谢和问候。
user1624253
问问题
229 次
3 回答
1
在这种情况下,最好的方法是通过 HTTP GET 加载图像,将其存储在Bitmap
对象中并以编程方式注入到ImageView
布局中定义的元素中。
你不能覆盖资源图像,所以你不能使用@drawable
.
在这里,您有loadBitmap
通过 url 加载图像并将其存储在的方法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);
于 2012-08-31T06:07:24.627 回答
0
不可能通过 XML。
如果当时没有可用的 Internet 访问,我也建议使用安慰剂位图。下载时使用 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);
}
}
于 2012-08-31T06:25:37.180 回答
0
伙计们找到了更好的解决方案
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();
}
于 2012-08-31T09:48:45.233 回答