我有一个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();
谢谢,再见 莫里吉奥
答案 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);