WebView常用方法详解及h5新特性

关于Android和JS互相调用,有一篇博客写的很好http://blog.csdn.net/leejizhou/article/details/50894531/

注意:当Android调用js代码,Android可以给js传参
    当js调用Android代码,js可以给Android传参

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. phoneGap1.5开始,为cordova,解决的javajs相互调用的麻烦,里面封装了一些android的方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值