示例代码块
html代码:
<html> <head> <title>JS交互</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script type="text/javascript"> function invokedByJava(param) { document.getElementById("content").innerHTML = "Java has invoked JS function and returnd the data :"+param; } </script> </head> <body> <p id="content"></p> <p> <input type="button" value="调用Java方法" onclick="window.stub.jsMethod('来至JS的参数');" / > <input type="button" value="调用alert" onclick="alert('hello')" /> </p> </body> </html> |
一、WebView简介
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView的组件;WebView(网络视图) 能加载显示网页 |
二、WebView的使用范例
WebView简单使用的步骤如下: (1)、在布局文件中声明WebView (2)、在Activity中实例化WebView (3)、需要在AndroidManifest.xml文件中添加网络权限: <uses-permission android:name="android.permission.INTERNET"/> (4)、调用WebView的loadUrl( )方法,设置WevView要显示的网页 (5)、为了让WebView能够响应超链接功能,需要通过setWebViewClient( )设置WevViewClient (6)、如果想要知道网页加载进度等信息,需要通过setWebChromeClient()设置 WebChromeClient; WebView主要属性设置如下: //设置滚动条样式 webview.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); webview.setHorizontalScrollBarEnabled(false); //加载网络页面 webview.loadUrl(url); //加载本地html webView.loadUrl("file:///android_asset/demo.html"); //加载html源码 webView.loadDataWithBaseURL("","html源码","text/html","utf-8",""); WebView网页现实的相关设置要通过WebSettings设置,如下: WebSettings settings = webview.getSettings(); //支持JavaScript settings.setJavaScriptEnabled(true); //支持网页缩放 settings.setSupportZoom(true); settings.setBuiltInZoomControls(true); //设置网页缓存 settings.setAppCacheEnabled(true);// 开启缓存 ettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 缓存优先模式 settings.setAppCacheMaxSize(8 * 1024 * 1024);// 设置最大缓存为8M //支持多窗口 settings.setSupportMultipleWindows(true); 重写WevViewClient: public class MyWebViewClient extends WebViewClient{ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return false; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } } 重写WebChromeClient: WebChromeClient mChromeClient = new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } /** * 支持alert效果 */ @Override public boolean onJsAlert(WebView view, String url, String message, f inal JsResult result) { //此处可以弹出dialog return true; } /** * 处理Js的Confirm */ public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { //此处可以弹出警告弹框 return true; } }; |
三、重写返回键实现点击返回键回退网页
注意在支持JavaScript的网页就不需要判定给予的地址和返回地址是否一样(url。equals(webview.geturl())) |