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









