1

我有一个 WebView,其中包含从本地 javascript 填充的数据(在“资产”文件夹中)。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();

谢谢,再见毛里齐奥

4

2 回答 2

1

来自开发者文档(在“Cookie 和窗口管理”下):

当设备方向或任何其他配置发生变化时,Activity 的标准行为将被销毁并重新创建。这将导致 WebView 重新加载当前页面。如果你不想这样,你可以设置你的活动来处理方向和键盘隐藏的变化,然后只留下 WebView。它会根据需要自动重新定向。有关如何在运行时处理配置更改的更多信息,请阅读处理运行时更改。

基本上,如果您告诉系统在这些更改期间要保留什么,它会为您保留它。我不得不说这是一个很棒的系统。每次我认为我必须以艰难的方式做某事时,稍作搜索就会找到让系统为我做这件事的方法。

于 2012-05-29T08:54:49.843 回答
0

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

WebView加载时保存图片:

pictureNightDay = myWebViewNightDay.capturePicture();

(pictureNightDay 是一个静态字段)。

然后在旋转时检查 pictureNightDay 是否不为空并交换 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);
于 2012-05-29T09:24:57.460 回答