WebView wv=(WebView) findViewById(R.id.wv);
wv.loadUrl(url); //WebView的控件跳转的网页
WebSettings setting=wv.getSettings();//得到setting
setting.setBuiltInZoomControls(true);//显示缩放按钮
setting.setUseWideViewPort(true);//支持双击缩放
setting.setJavaScriptEnabled(true);//支持js功能,重点,必须写
setting.setTextSize();//设置字体的大小
setting.setTextZoom();//设置字体的大小(不是数字,而是特定好的,6种字号)
wv.setWebViewClient(new WebViewClient() {
//所有跳转链接会走此方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, url) {
view.loadUrl(url); //在跳转页面时强制在当前WebView中加载
return super.shouldOverrideUrlLoading(view, url);
}
//开始加载网页
@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);
}
});
wv.setWebChromeClientnew WebChromeClient(){
//设置网页进度发生的变化
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
//获取网页的标题
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
});
//定义一个接口,接口里面的方法供js调用,第二个参数的作用,js通过改名字调用我们定义的方法
wv.addJavascriptInterface(new Object(){
@JavascriptInterface //Android5.0必须加该注解,否则又安全隐患,可以利用反射调用出所有的方法
public void demoMethod(){}
},"name");
wv.loadUrl("javascript:jsMethod('你好,js')");//jsMethod(“string”);这是javascript的代码 可以调用js的代码
wv.reload();//重新加载
wv_demo.setWebChromeClient(new WebChromeClient());// 支持运行特殊的javascript(例如:alert()) wv_demo.setWebViewClient(new WebViewClient());// 当点击超链地址后不会新打开浏览器来访问,而是始 wv_demo.addJavascriptInterface(DemoActivity.this,"android");//JS调用Android指定的方法前的标识
/*
* 例如 window.android.startFunction()
*/
//JS要调用的方法
@JavascriptInterface public void startFunction(){ runOnUiThread(new Runnable() { @Override public void run() { ToastUtils.showShortToast("调用了"); } }); } @JavascriptInterface public void startFunction(final String img){ runOnUiThread(new Runnable() { @Override public void run() { ToastUtils.showShortToast(img); } }); }
HTML代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<script type="text/javascript">
function javacalljs(){
document.getElementById("content").innerHTML =
"<br\>JAVA调用了JS的无参函数";
}
function javacalljswith(arg){
document.getElementById("content").innerHTML =
("<br\>"+arg);
}
</script>
</head>
<body>
HTML 内容显示 <br/>
<h1><div id="content">内容显示</div></h1>
<br/>
<input type="button" value="点击调用java代码" οnclick="window.android.startFunction()" />
<br/>
<input type="button" value="点击调用java代码并传递参数" οnclick="window.android.startFunction('http://blog.csdn.net/Leejizhou')" />
</body>
</html>
RECT NATIVE 利用此可以调用android里面的方法。
H5新特性:(myeclipse开发js必须安装apatn插件才会有提示)
1.可以不用下载flash player,直接定义audio,video标签来进行音乐视频播放。
2. <GeoLocation>可以用来定义位置,有争议,
3. canvas用于在网页上绘制图形,不能直接画,必须拿到2d对象来画。
4. phoneGap从1.5开始,为cordova,解决的java与js相互调用的麻烦,里面封装了一些android的方法。