如果我在滚动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之前解决这个问题..... :(
答案 0 :(得分:0)
我相信当滚动android 2.x版本时,为了使其更快,屏幕变成了位图并滚动,而不是重新绘制可能在屏幕上的每个视图。所以除非你覆盖它,否则颜色将停止被绘制,直到滚动停止
答案 1 :(得分:0)
您可以使用OnTouchListener拦截滚动条上的手指动作,重绘图形,然后在退出onTouchListener之前将手指动作传递回滚动条。
答案 2 :(得分:0)
您可以尝试在onTouchEvent中为WebView实现OnTouchListener调用yourWebView。invalidate(); 这会强制View重绘自己。