WebView的前世今生(二)------系统知识介绍
什么是WebView?
webView 是基于webkit引擎,展现web页面的控件。
WebView能用来做什么?
- 显示和渲染web页面
- 直接使用html文件作为布局
- 可和js交互调用
如何使用WebView?
先简单介绍几个相关的子类
-
WebSettings
WebSettings通过webView.getSettings()来获得,可以进行是否支持与js交互、是否支持缩放、是否支持访问文件等设置。
-
WebViewClient
主要有shouldOverrideUrlLoading、onPageStarted、onPageFinished等几个方法,常用形式如下:
// 1. 加载一个网页: webView.loadUrl("http://www.google.com/"); // 2. webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 复写shouldOverrideUrlLoading()方法,使得打开网页时不调用系统浏览器, 而是在本WebView中显示 view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 设定加载开始的操作 } @Override public void onPageFinished(WebView view, String url) { // 设定加载结束的操作 } public boolean onLoadResource(WebView view, String url) { // 设定加载资源的操作 } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){ // 加在页面的服务器出现错误(如404)的时候调用 } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // 处理https请求 handler.proceed(); // 表示等待证书响应 // handler.cancel(); // 表示挂起连接,为默认方式 // handler.handleMessage(null); // 可做其他处理 } });
-
WebChromeClient
常用形式如下:
webview.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { // 获取网页的加在进度并显示 } @Override public void onReceivedTitle(WebView view, String title) { // 获取web中的标题 } );
之后说一下与js交互的各种方式
-
android 调用js的代码
-
通过WebView的loadUrl()
<!--1. 文件名为javascript--> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Title</title>
-