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的变化。
我提供的方法只是抛砖引玉,如果有更好的解决方案,欢迎留言发链接。
喜欢文章的小伙伴啊点赞
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值