2009-07-06 69 views
5

说得很简单:我想将当前位置(可能是 几个位置)加入到一个WebView中显示的html文件中,以便稍后 恢复它。任何小小的提示都会有所帮助。 :)在WebView中获取文档位置?

回答

6

如果通过“当前位置”您指的是某个页面某处的某个点,我不相信这是可能的......至少不是纯粹从Java。暴露给Java的整个WebKit API缺少处理页面内容的任何事情。

如果你有在页面内容的控制,并有一个办法可以知道通过在页面的JavaScript这些位置,你可以:

第1步:使用WebView#addJavascriptInterface()与某种recordPosition()方法添加对象,将信息保存在任何地方

步骤#2:创建一个Javascript函数,该函数在注入的对象上调用recordPosition()

,然后或者:

步骤#3A:触发从JavaScript语言JavaScript函数(例如基于点击),或

步骤#3B:您WebView,其中...是呼叫loadUrl("javascript:...");由Javascript代码替换以触发第2步中的Javascript功能。

恢复这些位置必须以相同的方式工作:让Javascript执行实际的恢复,可能由Java代码触发。

请注意,我不知道你想要什么(获取/设置当前位置)可以从Javascript获得,因为我不是浏览器内部的编码器。

+0

令人惊叹的答案!非常感谢。 相关问题:http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko 2009-07-07 10:39:14

6

我采取的方法如下:

onSaveInstanceState()方法,计算出多远了网页的用户已经滚动。

​​3210

藏在包中。当恢复页面中的onCreate()方法,等待网页加载完成(在WebClient.onPageFinished()),滚动至记录位置:

int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent); 
    webView.scrollTo(0, y); 
  • 使用float和计算比率在之间翻转的情况下的工作原理风景和肖像。
  • 可以工作不够好但不是完美当与自动调整图像混合时。
  • 比例也可以考虑在内。我倾向于在开始加载页面之前在onPause()方法中优先保存比例尺,然后在webView.setInitialScale(scale)之前。
  • 我发现当scrollPercent > 0看起来更好时,将web视图设置为隐藏。
+0

很好地工作。我确认应该考虑到这个尺度。谢谢。 – 2010-02-28 19:38:23