WebView中webviewclient的作用
WebViewClient:在影响【View】的事件到来时,会通过WebViewClient中的方法回调通知用户,当不设置这个方法的时候,用webview加载网页会弹出一个对话框,提醒你选择系统装的浏览器,比如百度,uc,chrome等一些浏览器,设置这个方法意思就是让我们的webview来加载这个网页,不需要打开外部浏览器了
实际使用的话,如果你的WebView只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。
回调事件总结:
WebViewClient就是帮助WebView处理各种通知、请求事件的,常用到的如:
1.onLoadResource、onPageStart、onPageFinish
2.onReceiveError、onReceivedHttpError、onReceivedSslError
3.shouldInterceptRequest、shouldOverrideKeyEvent、shouldOverrideUrlLoading
4.onReceivedClientCertRequest、onReceivedHttpAuthRequest、onReceivedLoginRequest
5.其他:doUpdateVisitedHistory、onFormResubmission、onPageCommitVisible、onRenderProcessGone、onScaleChanged、onUnhandledKeyEvent
使用方法:
1.找到WebView控件
WebView webLayout = findViewById(R.id.web_layout);
2.设置setWebViewClient()
webLayout.setWebViewClient(new MyWebViewClient());
public static class MyWebViewClientextends WebViewClient {
/**
* 加载结束时调用onPageFinished()
* 在结束加载时隐藏进度条
*/
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
/**
* 拦截 url 跳转,在里边添加点击链接跳转或者操作
* 实现对网页中超链接的拦截
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
}