宝哥软件园

Android开发模式下的Java html javascript混合开发

编辑:宝哥软件园 来源:互联网 时间:2021-10-28

安卓开发,除了原有的开发模式之外,还可以采用java html javascript混合开发模式进行开发,这样可以节省大量的开发时间,同时,可以让不同设备的用户获得相同的用户体验。好了,二话没说,我们来看看今天要做什么。主要实现一个简单的注册功能,首先在jquery mobile中编写一个简单的注册页面,点击提交按钮,然后跳转到一个新的活动,并同时显示用户的注册信息,整体效果如下:

这里写图片描述

这个页面是用html jquery编写的,底部有一个提交按钮。点击提交按钮后,该页面的所有注册信息将转移到下一个活动。

这里写图片描述

这个界面完全是用原来的安卓方式开发的。好,我们一步一步来。

创建一个名为webViewTest的新项目,并创建一个名为index.html、index.html assets文件夹的新文件。index.html文件的代码如下:

!doctype html html ownerta charset=' utf-8 '标题无标题文档/title link href=' http://代码。jquery。com/mobile/1.0/jquery。移动-1.0。量滴CSS ' rel='样式表type=' text/CSS '脚本src=' http :3358代码。jquery。com/jquery-1。6 .4 .量滴js ' type=' text/JavaScript '/script script src=' http 33603358代码。jquery。com/mobile/click(function(){ var result=' { ';结果=' '用户名' : ';结果=$(' #用户名').val();结果=' ', '密码' : ';结果=$('#password ').val();结果=' ', '性别' : ';结果=$('输入[名称=' radio 1 ']:已选中').val();结果=' ', '利息' : ';$('输入[名称='复选框1 ']:已选中').每个(函数(){结果=$(this)).val()',';});结果=' ', '国家' : ';结果=$(' # select menu options : selected ').text()' ' } ';register_js.register(结果);});});/scriptdiv数据-角色='page' id='page' div数据-角色=“标题”h1标题/h1 /div数据-角色='content' ul数据-角色='listview '数据-插图='true' li数据-角色='列表分隔符'注册/li li分区数据-角色=“field contain”标签为='用户名'用户名:/标签输入类型=“文本”名称='textinput' id='username '值='张三//div/lili div数据-角色=“field contain”标签为='密码'密码:/标签输入类型='密码'名称='textinput' id='password '值='张三'/分区/丽丽分区数据-角色=“field contain”字段集数据-角色='controlgroup '数据-类型='水平'图例性别:/图例输入类型='收音机'名称='radio1' id='man '值='0' /标签为='男人'男/标签输入类型=' radio '名称=' radio 1 ' id=' woman '值=' 1 '/标签为=' woman '女/label /fieldset /div/lili div数据-角色=“field contain”字段集数据-角色='controlgroup '数据-类型='水平'图例爱好/图例输入类型=' checkbox ' name=' checkbox 1 ' id=' football ' class=' custom ' value=' 0 '/=足球的标签足球/label输入类型=' checkbox ' name=' checkbox 1 ' id='篮球class=' custom '值=' 1 '/标签为='篮球'篮球/标签输入类型=' checkbox ' name=' checkbox 1 ' id=' volly ball ' class=' custom ' value=' 2 '/标签为=' volly ball '排球/label /fieldset /div /li li div数据-角色=“field contain”标签为='selectmenu' class='select '国籍:/标签选择名称='选择菜单id='选择菜单'选项值='中国'中国/option选项值='美国'美国/option选项值='日本'小日本/option /select /div /li li按钮id='commit '提交/button /li /ul /div数据-角色="页脚"数据-位置="固定“h4脚注/h4 /div/div/body/html这里全部都是jquerymobile的知识,前面三行是引用框架和jquerymobile的射流研究…文件以及jqueryMobile的钢性铸铁样式文件。当点击按钮时,执行射流研究…代码,js代码获取每一项的值,同时拼凑成一个数据字符串,然后执行register_js.register(结果); 方法,这是一个什么方法呢?这是一会加载这个超文本标记语言的活动中的一个名叫注册的方法,结果是这个方法的参数,至于前面为什么是寄存器_js,我们一会再说。

再看看加载这个超文本标记语言的活动长什么样子,先看看它的布局文件:

线性布局xmlns : Android=' http://模式。安卓。com/apk/RES/Android ' xmlns : tools=' http://schemas。安卓。com/tools ' Android : layout _ width=' match _ parent ' Android : layout _ height=' match _ parent ' Android 3: orientation=' vertical ' tools 3: contextent=' com。例子。webviewset。主活动' WebView Android 333336它的布局文件中就一个控件,webView .

再来看看爪哇代码:

打包。例子。webview测试;导入安卓。app。活动;导入安卓。内容。意图;导入安卓。操作系统。捆绑;导入安卓。WebKit。webview公共类主要活动扩展了活动{私有WebView wv @ Override protected void onCreate(Bundle savedInstanceState){ super。onCreate(savedInstanceState);setContentView(r . layout。activity _ main);wv=(WebView)这个。findwiewbyid(r . id。w v1);wv.getSettings().setJAVAScript ENabled(true);wv。LoadURl('文件:///Android _ asset/index。html ');wv.addJavascriptInterface(这个,' register _ js ');}公共无效寄存器(字符串userInfo){ Intent Intent=新的Intent(主要活动。这个注册活动。类);intent.putExtra('userinfo ',userInfo);this.startActivity(意图);}}先拿到一个webview,然后wv.getSettings().setJAVAScript ENabled(true);表示允许执行射流研究…代码wv。LoadURl('文件:///Android _ asset/index。html ');表示把刚才的超文本标记语言文件加载进来,注意文件路径,项目中是资产文件夹,并不是android_assets,wv.addJavascriptInterface(这个,' register _ js ');表示创建一个对象传递给webview,作为射流研究…对象,这里把这个活动传递给webview,名称叫做寄存器_js,所以在射流研究…中执行这个活动中的方法时前面要加上寄存器_js,当然,你可以传递任何一个类的实例作为射流研究…对象,这样就可以在射流研究…中调用该类的方法了公共无效寄存器(字符串用户信息)方法就是点击超文本标记语言中的提交按钮时执行的方法了,该方法跳转将执行跳转到另一个活动中,并携带用户注册数据。

再来看看注册活动的布局文件:

线性布局xmlns : Android=' http://模式。安卓。com/apk/RES/Android ' xmlns : tools=' http://schemas。安卓。com/tools ' Android : layout _ width=' match _ parent ' Android : layout _ height=' match _ parent ' Android 3: orientation=' vertical ' tools 3: contextense=' com。例子。webview测试。主活动' TextView Android 333330注册成功,您的注册信息是:' AnDroid : text size=' 30dp '/linear layout AnDroid : layout _ width=' match _ parent ' AnDroid : layout _ height=' wrap _ content ' AnDroid :方位='水平' text view AnDroid : layout _ width=' wrap _ content ' AnDroid : layout _ height=' wrap _ content ' AnDroid 3: text='用户名:' Android : textsize=' 25sp '/TextView Android : id=' @ id/username ' Android : layout _ width=' wrap _ content ' Android : layout _ height=' wrap _ content ' Android : textsize=' 25sp '/line layout line layout Android : layout _ width=' match _ parent ' Android : layout _ height=' wrap _ content ' Android 3360密码:' Android : textsize=' 25sp '/TextView Android : id=' @ id/password ' Android : layout _ width=' wrap _ 内容' Android : layout _ height=' wrap _ content ' Android : textsize=' 25sp '/line layout line layout Android : layout _ width=' match _ parent ' Android : layout _ height=' wrap _ content ' Android 3360性别:' Android : textsize=' 25sp '/TextView Android : id=' @ id/gender ' Android : layout _ width=' wrap _ content ' Android : layout _ height=' wrap _ content ' Android : textsize=' 25sp '/line layout line layout Android : layout _ width=' match _ parent ' Android : layout _ height=' wrap _ content ' Android 3360爱好:' android:textSize='25sp'/TextView Android : id=' @ id/interest ' Android : layout _ width=' wrap _ content ' Android : layout _ height=' wrap _ content ' Android : textsize=' 25sp '/line layout line layout Android : layout _ width=' match _ parent ' Android : layout _ height=' wrap _ content ' Android : orientation='水平TextView android:id国籍:' Android : textsize=' 25sp '/TextView Android : id=' @ id/country ' Android : layout _ width=' wrap _ content ' Android : layout _ height=' wrap _ content ' Android : text size=' 25sp '/line layout/line layout registereactivity的爪哇代码:

打包。例子。webview测试;导入组织。JSON。jsone exception;导入组织。JSON。JSON对象;导入安卓。app。活动;导入安卓。操作系统。捆绑;导入安卓。小部件。textview公共类注册活动扩展活动{私人文本视图用户名、密码、兴趣、国家、性别;@ Override protected void onCreate(Bundle savedInstanceState){ super。onCreate(savedInstanceState);这个。setcontentview(r . layout。register _ activity);这个。username=(TextView)这个。findwiewbyid(r . id。用户名);这个。password=(TextView)这个。findwiewbyid(r . id。密码);这个。利息=(TextView)这个。findwiewbyid(r . id。利息);这个。country=(TextView)这个。findwiewbyid(r . id。国家);这个。性别=(TextView)这个。findwiewbyid(r . id。性别);字符串userinfo=this.getIntent().getExtras().getStrIng('用户信息');尝试{ JSON对象JSON=新JSON对象(用户信息);用户名。settext(JSON。getString(' username ');密码。settext(JSON。GetString(' password ');兴趣。settext(JSON。GetString(' interest ').替换(' 0 ','足球') .替换(' 1 ','篮球').替换(' 2 ','排球'));国家。SetText(JSON。GetString('国家').替换(' 0 ','中国') .替换(' 1 ','美国').替换(' 2 ','小日本'));性别。SetText(JSON。GetString('性别').替换(' 0 ','男') .替换(' 1 ','女'));} catch(JSonexception e){ e . print stack trace();} }}这些都是常规的机器人开发代码,我就不多解释了。另外,还要在布局文件中添加以下权限:

uses-permission Ando id : name=' Android。允许。摄像机'/使用-permission Ando id : name=' Android。允许。颤动/uses-permission Ando id : name=' Android。允许。access _ rough _ LOCATION '/使用-permission Ando id : name=' Android。允许。ACCESS _ LOCATION _ EXTRA _ COMPORTS '/使用-permission and o id : name='关于混合开发这一块涉及内容太多,我后面会陆续写文介绍。

原文链接:http://博客。csdn。net/u 012702547/article/details/45727329

源码下载:http://小哉。JB 51。net/201606/马援/webViewTest(jb51.net).压缩包

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+