android web混合开发 混合开发实例——JS与Java的交互

今天说说安卓混合开发。 
曾经有一个话题是web终会一统app,然后我们看到随着时间的推移。web越来越强大(H5啊,js各种框架啊),但同时原生app也在不断发展。 
或许在将来还会再有这种话题论战,但目前,混合开发,结合web和原生app二者各自的优势,已经是众望所归了。

其中最常见的一种方式,在安卓的webview中嵌套web,通过各类设计,让二者进行交互。使得用户体验上几乎无法分辨出究竟是否纯原生。 
这种方式最值得深入研究的就是,安卓中的Java代码与web端的JavaScript代码进行相互交互调用。


简单介绍一下背景知识:(Java和javascript

说到java,作为目前(以及此前这么多年来)最受青睐最有用武之地的语言,就不多介绍了。贴百科: 
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3] 。

说到javascript。贴百科:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

这么晦涩难懂? 那就简单一句话,其实java和JavaScript,完全是两码事。前者是面向对象,后者是内置对象。且后者借鉴了前者,但二者并没有关系.


好了,来到正题吧,先上效果图。

这里写图片描述

图中, 
上半部分(蓝色背景)是安卓中实现的简单布局 
下半部分(白色背景)是一个webview,里面的内容自然就是一个网页。

但是我们看到,点击上半部分安卓中的视图,能够改变webview中网页的视图。 
同样,点击下半部分网页中的Button,能够调用安卓的Toast对话框。

这就是简单的一个Android与web交互,目前在安卓界普遍称为JS交互


理论的东西讲完了,接下来上代码: 
今天的主角其实是两方面:安卓和web, 
但我们分为4个类: 
1.index.html,这是一个简单的web页面。 
2.activity_main.xml 安卓的布局 
3.MainActivity 安卓的主界面,同时也是本例的入口 
4.JsInterface,这个类其实算帮助类,只是为了代码好看才抽出来


1.首先是index.html: web的布局及函数 (注意,这个文件要放在安卓的assets文件下)

<html>
<!-- 简单写,就省略了head -->
<body>
    <script language="javascript">
        //这个方法是与java事先商定的方法,让java来调用
        function java_call_Js(param) {
    
            var x = document.getElementById('test');
            x.innerHTML = "Hello , New text form java ! ------------>" + param;
        }

        //Html自身Button的方法,去调用Java
        function btn_js() {
    
            jsInterface.js_call_java();
        }
    </script>

    <input type="button" onClick="btn_js()"
        style="height: 60px; width: 240px; margin-top: 40px ; margin-bottom: 10px"
        value="(JS call Java)I'm a Button in html">

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值