有没有办法强制WebView在滚动时更新其图片(视图)?

时间:2012-02-08 01:20:38

标签: android webview scroll

如果我在滚动WebView的同时在WebView上运行一些javascript(用手指在屏幕上),则在手指被抬起之前,视图不会使用新的外观进行更新设备和滚动停止。

为了测试这一点,我在onScroll覆盖了WebView,我在那里调用了一些javascript,它将页面背景改为随机颜色。当页面滚动时,会一遍又一遍地调用它。因此,滚动时应快速闪烁不同的颜色。

然而,在带有姜饼的Nexus S和带有冰淇淋三明治的Galaxy Nexus上,只有在滚动停止时才会更新颜色。

但是在带有Honeycomb的Xoom上,当您滚动时,颜色会不断更新。这是理想的结果。

关于其他设备有什么不同以及如何在滚动Xoom的方式时强制WebView更新自己的想法?

谢谢!

更多信息:请注意,在滚动期间会收到并制作javascript,但在滚动结束之前,不会显示显示这些更改的图片。例如,如果您调用的javascript是“console.log('rawr');”滚动时出现的日志。

在源代码中找到了一些内容有一个名为startDrag()WebView方法调用WebViewCore.pauseUpdatePicture(mWebViewCore),禁止在滚动时更新图片。在3.0中,他们引入了WebSetting setEnabledSmoothTransition(),您可以在4.0代码中看到它,允许您禁用暂停。但是,这仅适用于3.0或更高版本,这意味着不到野外设备的3%。到目前为止,我没有看到任何方法在3.0之前解决这个问题..... :(

3 个答案:

答案 0 :(得分:0)

我相信当滚动android 2.x版本时,为了使其更快,屏幕变成了位图并滚动,而不是重新绘制可能在屏幕上的每个视图。所以除非你覆盖它,否则颜色将停止被绘制,直到滚动停止

答案 1 :(得分:0)

您可以使用OnTouchListener拦截滚动条上的手指动作,重绘图形,然后在退出onTouchListener之前将手指动作传递回滚动条。

答案 2 :(得分:0)

您可以尝试在onTouchEvent中为WebView实现OnTouchListener调用yourWebView。invalidate(); 这会强制View重绘自己。