参考资源:
webview与js交互
简书 安卓混合开发——原生Java和H5交互,保证你一看就懂!
webview与js交互
什么是webview
webview介绍的原文如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.
一个用于显示web 页面的view容器, 你可以滚动web浏览器或者只是简单的显示网络上的内容. 他使用Webkit 引擎去渲染页面可以拥有前进后退的导航, 放大或者缩小. 可以实现和js的交互
webview能做什么
webView可以利用html做界面布局,虽然目前还比较少人这么使用,不过我相信当一些客户端需要复杂的图文(图文都是动态生成)混排的时候它肯定是个不错的选择。
直接显示网页,这功能当然也是它最基本的功能。
和js交互。(如果你的js基础比java基础好的话那么采用这种方式做一些复杂的处理是个不错的选择)。
如何使用
WebViewDemo.java
1 | package com.google.android.webviewdemo; |
demo.html
1 | <html> |
main.xml
1 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
如何交互
android如果调用js
调用形式:
1 | mWebView.loadUrl("javascript:wave()"); |
其中wave()是js中的一个方法,当然你可以把这个方法改成其他的方法,也就是android调用其他的方法。
js调用android
调用形式:
1 | <a onClick="window.demo.clickOnAndroid()"> |
代码中的“demo”是在android中指定的调用名称,即
1 | mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo") |
代码中的clickOnAndroid()是“demo”对应的对象:new DemoJavaScriptInterface() 中的一个方法。
Demo
现在你一定了解了android和js的交互了。是时候分析一些demo了,根据上面讲的你也应该比较清楚了。具体交互流程如下:
①点击图片,则在js端直接调用android上的方法clickOnAndroid();
②clickOnAndroid()方法(利用线程)调用js的方法。
③被②调用的js直接控制html。
个人总结:利用webView的这种方式在有些时候UI布局就可以转成相应的html代码编写了,而html布局样式之类有DW这样强大的工具,而且网上很多源码,很多代码片。在UI和视觉效果上就会节省很多时间,重复发明轮子没有任何意义。