Android Webview 基础教程

写在前面:这段时间公司的App再做嵌入式HTML开发,通过这段时间的整理和趟坑,笔者想分享一下WebView的常用知识。笔者也认同"大前端是未来的大势所趋"的观点。


一、介绍

WebView是一个可以用来加载本地HTML,或者网页链接的Web网页控件,可以理解为一个浏览器。因为WebView的API提供浏览器的基本操作。

PS:Android 4.4之前使用WebKit作为渲染内核,4.4以后统一采用Google的Chrome内核。

二、使用









// 3.在[../app/src/main/java/com/macro/xxx/WebViewActivity.java]中配置WebView

mWebView = findViewById(R.id.web_view);
mWebView.loadUrl("https://www.baidu.com/");
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());

三、常用系统方法(Public methods)

// 注入Java Object到 Webview
public void addJavascriptInterface(Object object, String name)
// WebView是否可以回退
public boolean canGoBack()
// WebView是否可以前进
public boolean canGoForward() 
// 清除所有Webview的缓存
public void clearCache(boolean includeDiskFiles) 
// 清除前进、后退历史
public void clearHistory()
// 生命周期方法 WebView销毁
public void destroy() 
// 异步调用JS, 并且获取返回值
public void evaluateJavascript(String script, ValueCallback resultCallback)
// 获取网页内容高度
public int getContentHeight() 
// 获取Setting对象,用于控制Webview
public WebSettings getSettings() 
// 获取标题
public String getTitle() 
// 获取URL 
public String getUrl()  
// 获取Chrome client 对象
public WebChromeClient getWebChromeClient() 
// 获取WebView Client 对象
public WebViewClient getWebViewClient() 
// 返回上一历史
public void goBack() 
// 跳转前进后退历史的任意一页
public void goBackOrForward(int steps) 
// 前进
public void goForward() 
// 加载data,可用于加载html代码段 
public void loadData(String data, String mimeType, String encoding) 
// 加载URL,可加载本地或网络连接
public void loadUrl(String url) 
// 同上,可以加HTTPSHeader
public void loadUrl(String url, Map additionalHttpHeaders)
// 生命周期,暂停加载
public void onPause()
// 生命周期,恢复加载
public void onResume()
// 刷新页面
public void reload()
// 移除java接口对象
public void removeJavascriptInterface(String name)
// 设置背景色
public void setBackgroundColor(int color)
// 设置越界滚动模式
public void setOverScrollMode(int mode)
// 设置滚动条样式
public void setScrollBarStyle(int style)
// 设置Chrome Client
public void setWebChromeClient(WebChromeClient client)
// 允许网页内容的Debug  (HTML/CSS
public static void setWebContentsDebuggingEnabled(boolean enabled)
// 设置WebView Client
public void setWebViewClient(WebViewClient client) 
//  停止加载
public void stopLoading()

四、WebView几个主要对象(WebSettings、WebViewClient、WebChromeClient)

4.1 WebSettings

  • 4.1.1 获取WebSettings
WebSettings webSettings = mWebView .getSettings();  
  • 4.1.2 JS交互相关
    // 允许JS交互
public void setJavaScriptEnabled(true);
    // 允许插件
public void  setPluginsEnabled(true);         
    // 允许通过JS打开新窗口
public void setJavaScriptCanOpenWindowsAutomatically(true); 
  • 4.1.3 缩放处理
    // 将图片调整到适合webview的大小
public void setUseWideViewPort(true);
    // 缩放至屏幕的大小
public void setLoadWithOverviewMode(true); 
    //支持缩放,默认为true。是下面那个的前提。
public void setSupportZoom(true);
    //设置内置的缩放控件。 这个取决于setSupportZoom(), 若setSupportZoom(false),则该WebView不可缩放,这个不管设置什么都不能缩放。
public void setBuiltInZoomControls(true); 
    //隐藏原生的缩放控件
public void setDisplayZoomControls(false); 

4.2 WebViewClient

用于处理通知和各种事件,通过重载方法使用

// 网页加载的时候拦截URL
public boolean shouldOverrideUrlLoading(WebView view, String loadUrl);
// 页面开始加载的时候调用
public void onPageStarted(WebView view, String url, Bitmap favicon); 
// 页面加载完成的时候调用
public void onPageFinished(WebView view, String url); //在页面加载结束时调用, 我们可以关闭loading 条,切换程序动作。

4.3 WebChromeClient

处理JS的对话框、网址图标、网址标题和加载进度,通过重载方法使用

// 进度改变
public void onProgressChanged(WebView view, int newProgress); 
// 获取标题
public void onReceivedTitle(WebView view, String title);
// 获取icon
public void onReceivedIcon(WebView view, Bitmap icon);
// 处理alert弹出框
public boolean onJsAlert(WebView view, String url, String message, JsResult result); 
// 处理prompt弹出框
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) 
// 处理confirm弹出框
public boolean onJsConfirm(WebView view, String url, String message, JsResult result); 

你可能感兴趣的:(Android Webview 基础教程)