2012-02-08 60 views
6

如果我运行上的WebView一些javascript而WebView被滚动(屏幕上的手指)时,视图不与新的外观,直到手指从装置和滚动停止解除更新。有没有办法强制WebView更新其图片(视图),而滚动?

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

然而,在Nexus S的姜饼和Galaxy Nexus的冰淇淋三明治的颜色滚动停止仅更新时。

但是在带蜂窝的Xoom上,随着滚动,颜色会不断更新。这是理想的结果。

什么是对其他设备,以及如何强制的WebView进行自我更新,而滚动的Xoom做的方式不同的任何想法?

谢谢!

更多信息:只需注意,在滚动过程中会收到并制定javascript,但显示这些更改的图片直到滚动结束才会显示。例如,如果您调用的JavaScript是“console.log('rawr');”滚动时出现日志。

源代码找到东西有一种WebView方法称为startDrag()调用WebViewCore.pauseUpdatePicture(mWebViewCore)禁用从在滚动更新的图片。在3.0中,他们介绍了您可以在4.0代码中看到的WebSetting setEnabledSmoothTransition(),允许您禁用暂停。然而,这只有3.0以上,这意味着在野外设备中不到3%。到目前为止,我没有看到任何方式来解决这个在3.0之前的设备...... :(

回答

0

我相信,当android 2.x版本滚动,使其更快,屏幕变成了一个位图这是滚动的,而不是重新绘制每个视图可能会在屏幕上,所以除非你重写这个,颜色将停止绘制,直到滚动停止

+0

奇怪的是,我在Xoom上有3.1,它的工作原理与我想要的完全一样。所以也许他们改变了他们的做法,然后再改回来,然后再改回来。关于如何“超越这个”的任何想法?谢谢! – cottonBallPaws 2012-02-08 04:15:50

0

你可以使用一个OnTouchListener来拦截手指在滚动条上的动作,重新绘制图形,然后在退出onTouchListener之前将手指移回滚动条。

+0

你将如何重绘图形?我想让Webview重新绘制其内容,即网页内容。 – cottonBallPaws 2012-02-12 06:15:08

0

您可以尝试的是为您的Web实现OnTouchListener查看int onTouchEvent调用你的WebView。 invalidate(); 这会强制视图重绘自己。

+0

我试过这个有一些希望,但唉invalidate()似乎并没有强制WebView重绘其图片,它仍然等待,直到滚动完成。 – cottonBallPaws 2012-02-16 21:02:24

相关问题