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的变化。
我提供的方法只是抛砖引玉,如果有更好的解决方案,欢迎留言发链接。
喜欢文章的小伙伴啊点赞