我有自定义的WebView类,其中默认的zoomIn / zoomOut控件被禁用,我手动处理缩放事件。
我还有WebViewClient,其中onScaleChanged()处理程序被覆盖,它看起来像这样:
mWebViewClient = new WebViewClient(){
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
System.out.println("Scale changed");
}
};
当调用zoomIn()/ zoomOut()而不是onScaleChanged()处理程序多次执行时,问题就出现了,我多次获得“Scale changes”。每个zoomIn()/ zoomOut()事件应该将此事件称为一次。
另外值得一提的是,此问题仅在Android版本低于4.4的设备上发生。在Android 4.4上,每个缩放事件只调用一次处理程序(应该是这样)。我在Android 4.3.1,Android 4.1.1以及Android 4.0.4上都遇到了这个问题(所有设备都是手机)。
众所周知,从Android 4.4引入了Chromium驱动的WebViews,我猜这个更新已经解决了这个问题,但是我无法在网上找到任何相关内容。
为什么在WebKit引擎支持的WebView上多次调用此处理程序,在Chromium驱动的WebView上,它按预期工作?