#.简介:
WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。
#一、WebView常用方法
1.加载Url或资源的方法
//方式1:加载指定Url,可以指向网络资源,也可以是本地资源。这是最常用的加载方法。
webView.loadUrl("百度一下,你就知道");
webView.loadUrl("file:///xxx/xxx/test.html");
//方式2:加载内容片段
loadData(String data, String mimeType, String encoding);
loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl));
注意:Android9.0之后,默认情况下是禁用明文支持的,因为默认是无法加载Http协议类型的Url的,加载时会报错:net:ERR_CLEARTEXT_NOT_PERMITTED。可以 把Http协议类型的Url换成对应的Https协议类型Url。
如果要支持加载Http类型的Url,需要在AndroidManifest.xml中
<application>
</application>节点下添加配置:
android:usesCleartextTraffic="true"
2.生命周期相关方法
/*2.生命周期相关方法
一般会根据所在页面的生命周期变化,来调用以下相关方法*/
//2.1激活WebView实例为活跃状态,能正常执行网页的响应
webView.onResume();
//2.2通知WebView实例的内核暂停所有的动作,如页面解析、插件加载、JavaScript脚本执行等。
//一般当页面被失去焦点被切换到后台不可见状态,需要执行onPause
webView.onPause();
//2.3暂停应用中所有webview的layout、parsing、javascriptTimer等,降低CPU功耗。
//一般当应用被切换到后台时,调用该方法,作用于所有WebView
webView.pauseTimers();
//2.4恢复调用pauseTimers()后被暂停的状态
webView.resumeTimers();
//2.5销毁WebView实例
//注意:为避免出错,要先把WebView从所在View树上移除,再销毁WebView实例
rootLayout.removeView(webView);
webView.destroy();
3.页面前进、后退
/*3.页面前进、后退*/
//是否可以后退
webview.canGoBack();
//后退一页
webview.goBack();
//是否可以前进
webview.canGoForward();
//前进一页
webview.goForward();
//以当前的index为起始点前进或者后退到历史记录中指定的steps
//如果steps为负数则为后退,正数则为前进
webview.goBackOrForward(steps);
4.事件拦截
/*4.事件拦截
有很多相关的方法,下面是几个例子*/
//例如覆写按键事件,onKeyDown()/onKeyUp()
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//示例:点击返回按钮后,默认是触发Activity的finish。若需要触发网页回退,可以添加代码:
if ((keyCode == KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return super.onKeyUp(keyCode, event);
}
5.设置回调接口
/*5.设置回调接口
有很多可设置的接口,下面是个例子*/
//设置下载监听接口
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
}
});
6.其它方法
/*6.其它方法*/
//刷新页面(当前页面的所有资源都会重新加载)
webView.reload();
//停止加载
webView.stopLoading();
//清除整个应用中WebView网页访问留下的缓存
webView.clearCache(true);
//清除对应WebView访问的历史记录
webview.clearHistory();
//清除当前WebView自动完成填充的表单数据(并不会清除WebView存储到本地的数据)
webview.clearFormData();
#二、常用的辅助类:WebSetting/