Rexsee是国内的开源移动Web开发平台,针对Android手机、触摸屏等终端设备,提供底层开发和运行平台,以及扩展工具包,简化基于SDK的Java原生开发,支持开发者以标准化Web开发模式,即HTML5,CSS3和Javascript快速实现移动应用。可以有效降低技术实现门槛以及成本开销。
使用Rexsee开发Android应用与创建一个网站的流程无异,所有Rexsee代码仅体现在Web前端,放在HTML页面的<script>标签内。
编写Rexsee客户端,实际上就是编写Rexsee所能理解、渲染的HTML、CSS和Javascript代码。你可以把Rexsee理解为一个“浏览器”,这个“浏览器”除了支持Webkit支持的所有对象外,又扩展了100多个Javascript对象及相应的2000个方法和事件。
支持本地功能的调用接口,可以实现对本地存储、通讯录、传感器、定位信息等本地功能的调用。同时,还提供了离线提交、push推送等原生应用功能。
- 界面:Rexsee的页面设计支持Web布局和原生布局两种形态。针对于原生布局,可以通过Javascript语言构造出Android SDK中的布局和基本对象,结合相应的触屏事件,可以有很好的用户体验。且支持2D和3D的绘图功能。针对Web布局有两个不同类的对象,一是页面内对象,一是页面外对象。
- 页面内对象指的是网页对象,如表格、DIV层、图片、画布等。可以用CSS来控制其样式,其渲染效果由Webkit引擎负责展现。
- 页面外对象是指网页以外的元素,如各种Bar,对话框(Dialog),弹出窗口等。使用Rexsee的样式表定义,如该对象的位置、宽、高、透明度、颜色、字体等。页面外元素的样式是通过相关对象的样式设置方法来操作的。
- 功能调用:同时支持同步和异步两种调用方式。实现多媒体支持,定位、位置服务,传感器,存储,蓝牙、wifi,以及推送和通知等功能。
- 交互:通过Javascript的事件接口、Rexsee的事件接口以及Rexsee私有协议实现。
- 特别指出,私有协议是通过诸如:rexsee:info;rexsee:about等;
- Rexsee的事件接口已经由Rexsee内置注册,使用时只需在相应的事件函数中编写用户代码即可,在事件触发时,用户代码会被执行。
- 调试:和原有的Web前端开发一致。同时,Rexsee本身也提供了异常事件,用于捕捉错误。
- 编译:整个过程其实就是将Rexsee代码和Rexsee客户端关联的过程。
- 可以体现在B/S架构下,只需将Rexsee代码所在的URL和Rexsee客户端首页绑定。这种架构下,Rexsee代码实际上是部署在服务器端,客户端体积小,无需下载更新即可实现应用升级。
- 也可以在C/S架构下,需要将Rexsee代码、资源文件打包进Rexsee客户端,这种架构模式更加类似于原生应用,完全摆脱网络束缚,启动和运行效率较高。
- 同时,Rexsee还提供了B/C/S混合架构模式,即整合B/S和C/S的优势。
对于开发者而言,只需在掌握Web前端开发的基础上,按需选用Rexsee提供的Javascript对象,按照Rexsee对象的方法、事件编写代码便可实现相应功能。
简单代码示例如下
<html>
<head>
<title>这是一个android应用</tiltle>
<script type=text/javascript>
//Rexsee 代码从这里开始
window.onRexseeReady=function(){
rexseeScreen.setScreenOrientation("portrait"); //设置屏幕方向
rexseeTitleBar.setStyle('visibility:hidden;'); //标题栏样式 隐藏
rexseeStatusBar.setStyle('visibility:hidden;'); //状态栏样式 隐藏
rexseeDialog.toast('系统加载完毕!'); //出现后随即消失效果
}
</script>
</head>
</html>
代码写好之后使用在线编译生成APK文件,下载安装在终端;在线编译的首页地址是程序的网络地址;也可以使用预打包,把程序首页地址放在本地,把本地地址作为首页地址。
Rexsee社区提供了开发手册,按Rexsee对象的方法、事件编写代码便可实现相应功能。http://www.rexsee.com/rexsee/rexseeReference.apk
社区目前也提供在线开发环境,也可以本地开发后上传文件进行在线编译,最后封装成一个客户端。博客里有一个在线开发的hello world示例,供参考:http://my.oschina.net/u/194999/blog/42218
来源:oschina
链接:https://my.oschina.net/u/194999/blog/54361