webview总结setInitialScale() 缩放失效

setInitialScale(100)

和reload()方法要尽可分开执行,

如果同时执行,会导致缩放屏幕失效。

原因是setInitialScale()是个耗时操作,当这个操作进行到一半的时候。

reload()方法执行了,会中断setInitialScale()的执行。

 
 
 
要利用好  WebViewClient的
     override fun onScaleChanged(view: WebView?, oldScale: Float, newScale: Float) 方法,
没测setInitialScale的时候监听一下newScale的值,
在小米等一些板子中,如果你从一个2.0的scale缩放到1.0,比如从setInitialScale(200) 切换到setInitialScale(100)。这时候,他的真实newScale值可能不是1.0,而是1.66666。 
解决方案:
if(currentScale==100&& newScale>1.0){
webview.setInitialScale(75)
}else if(currentScale==100&& newScale<1.0f){
webview.setInitialScale(100)
}
    给他来回切换一下,他就会重置到1.0的缩放了。
 
产生这个bug的原因,可能是因为webview内核实现不同。
而且onScaleChanged这个方法很不稳定,经常会监听不到scale的变化。
我提供的方法只是抛砖引玉,如果有更好的解决方案,欢迎留言发链接。
喜欢文章的小伙伴啊点赞

猜你喜欢

转载自blog.csdn.net/xiexiaotian11/article/details/106084353