Android:轮换后保留Webview内容

时间:2012-05-29 08:36:22

标签: android android-webview screen-rotation

我有一个WebView,其中包含从本地javascript填充的数据(在“asset”文件夹中)。 WebView需要几秒钟才能加载,因此我希望将其保留在设备轮换上。我不想使用configChanges,因为它有一些其他附带效果。

在我看来,最好的方法是从WebView制作图片并在旋转时加载图片而不是WebView,但我无法弄清楚如何。

这是我尝试过的代码:

Canvas canvas = new Canvas();
pictureNightDay.draw(canvas);
Bitmap b = Bitmap.createBitmap(pictureNightDay.getWidth(), pictureNightDay.getHeight(),Config.ARGB_8888);
myWebViewNightDay.draw(new Canvas(b));

但这仅显示空白视图。

“pictureNightDay”之前已保存

pictureNightDay = myWebViewNightDay.capturePicture();

谢谢,再见 莫里吉奥

2 个答案:

答案 0 :(得分:1)

来自Developer Docs(在“Cookie和窗口管理”下):

当设备方向或任何其他配置发生更改时,将销毁并重新创建活动的标准行为。这将导致WebView重新加载当前页面。如果您不想这样,可以将Activity设置为处理方向和keyboardHidden更改,然后单独保留WebView。它会根据需要自动重新定位。有关如何在运行时处理配置更改的更多信息,请阅读Handling Runtime Changes

如果您告诉系统在这些更改期间要保留的内容,它将为您保留它。我不得不说这是一个很棒的系统。每次我认为我必须以艰难的方式做一些事情,一点点的搜索找到了我让系统为我做的方法。

答案 1 :(得分:0)

最后我得到了以下答案:我使用了两个视图,一个WebView和一个ImageView(最初隐藏)

加载WebView时保存图片:

pictureNightDay = myWebViewNightDay.capturePicture();

(pictureNightDay是静态字段)。

然后在轮换时检查pictureNightDay是否为null并交换ImageView和WebView可见性:

ImageView im = (ImageView) l.findViewById(R.id.tripreport_tipology_imagenightday);
im.setImageDrawable(new PictureDrawable(pictureNightDay));
im.setVisibility(View.VISIBILE);
myWebViewNightDay.setVisibility(View.GONE);