使用SenchaTouch开发跨平台移动Web应用精品资料.doc
《使用SenchaTouch开发跨平台移动Web应用精品资料.doc》由会员分享,可在线阅读,更多相关《使用SenchaTouch开发跨平台移动Web应用精品资料.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Sencha Touch 是由 Sencha 公司开发的移动 Web 应用开发框架,用以提升主流移动设备在浏览器上的触碰操作,增强用户体验。该框架以久负盛名的 Ext JS 富客户端框架为基础,并支持最新的 HTML5 及 CSS3 标准,与流行的 Apple iOS 和 Andriod 设备兼容。一方面,它以 Webkit 浏览器引擎为基础,提供了出色的性能和用户体验;另一方面,它提供了基于 GPL V3 许可的开源版本和详尽的 API 文档,体现了良好的开放性和易用性。因此,该框架可帮助移动应用开发人员提升开发效率,从而创造出更多富有创意的移动应用。随着智能移动设备的普及和 3G 通讯技术
2、的发展,将会有越来越多的传统应用部署为移动 Web 应用,而良好兼容性和操控性是 Web 应用成功的关键。本文将分为以下四个部分介绍 Sencha Touch 的独特之处,并结合示例为相关移动应用的开发人员编写良好兼容性和操控性的 Web 程序提供借鉴。v 功能与特性v 界面组件v 动画效果v 应用开发环境的搭建及相关 JavaScript API 用法与众不同的 Sencha Touch:功能和特性Sencha Touch 是世界上第一个支持 HTML5 和 CSS3 标准的移动应用框架,你可以使用 HTML5 来编写音频和视频组件,还可以使用 LocalStorage Proxy 来存储离
3、线数据,同时,大量 CSS3 样式表为你提供了创建健壮样式层的可能。该框架在提供丰富功能的基础上对 JavaScript 库文件进行合理优化,使得经过 gzipped 压缩后的库文件在 120kb 以下,最大限度地提升了 Web 应用在浏览器中的加载速度,增强了用户体验。除了对最新标准的支持,该框架最大的特色正如其名,增强了对手持移动设备触控操作的支持,除了支持浏览器标准的触摸事件,还额外添加了如 tap, double tap, swipe, tap-hold, pinch 和 rotate 等富有吸引力的操作事件,使用户体验到与原生程序一样的效果。Sencha Touch 另一大优势在于其
4、跨平台性,由于 Apple iOS 和 Andriod 设备有其独立的开发、测试和运行环境,针对某一平台开发的应用在另一平台是不兼容的,这大大增加了移动应用的开发成本。而基于 Sencha Touch 开发的 Web 应用具有与原生应用相同的用户体验,同时兼容 Apple iOS、Andriod 和黑莓 RIM 6 设备,可以满足大部分的市场需求。此外,借助 Ext JS 多年来对 Ajax 数据集成的经验,该框架提供了丰富的数据处理功能。开发人员能够方便地处理各种格式的数据如 XML、JSON,并能灵活地绑定到可视化组件加以展示。个性鲜明的 UI 组件表单是用户与应用程序交互的基本媒介,如用
5、户信息注册、应用程序配置、个人评论的发表这些常见的 Web 应用场景都需要表单组件的支持。Sencha Touch 为我们提供了形式多样、操作简单的 表单组件 。图 1 中第一个界面所展示的是基本表单元素,包括多种类型的输入框,如纯文本、密码、邮件、URL 地址等类型,并能根据用户输入的文本进行有效性验证,以减少开发者对用户输入格式的验证代码,同时,基本表单还支持单选、多选、日历选择、多行文本输入等控件类型。图 1 第二个界面展示了触控屏手持设备所特有的滑动条组件,适合调整一些连续性的数值和作为切换的开关按钮。图 1 中第三个界面展示了建立在工具条上的表单控件,非常适用于搜索和文本过滤的应用场
6、景。图 1 表单组件列表是移动 Web 应用展示信息最为常见的组件,其中比较有特色的是分组列表(Grouped List)(如 图 2 中第一个界面),它可以根据所列项目的首字母进行排序分组,当用户触摸屏幕右侧字母索引时,屏幕可快速滚动并定位至对应分组,非常适合于列表信息较多的情况,如联系人列表,歌曲列表等。图 2中第二个界面所示的嵌套列表(Nested List)则非常适合于展示信息有层级关系的情况,如浏览论坛时的“讨论区 - 主题帖 - 原帖及回复内容”这样的层次关系。图 2 列表组件精致形象的图标和布置合理的工具栏是 Apple iOS 原生应用引以为傲的部分,而 Sencha Touc
7、h 也可以做到这一点。图 3 中第一个界面所示的是框架内置的图标样式,已可以满足大部分应用的需要,开发人员还可以通过自定义图标样式来扩展出更多更丰富的图标。如 图 3 中第二个界面所示,图标所在的工具栏布置方式也灵活多样,即可在屏幕顶部或者底部,也可以多个层叠,并可以在工具栏上布置形状各异的按钮。图 3 中第三个界面所展示的是根据底部 Tab 标签页而进行切换的面板,不同的面板中可以包含不同的主题内容。图 3 图标、工具栏和标签页如果你以为 Sencha Touch 只能做到以上这些小儿科,那就错了,下面展示了一些高级的 UI 功能。图 4 中第一个界面类似于 Apple iOS 设备上的 S
8、pringBoard 操作,可以通过手指的左右或者上下滑动,来旋转切换界面窗口;图 4 中第二个界面显示了一个窗口重叠的效果,当上层弹出窗口激活时,下层窗口的操作是被屏蔽的,在提醒用户执行一些重要操作的场景中(如删除或者保存),这样的 UI 组件是非常好用的。图 4 旋转切换与窗口的重叠效果酷炫的动画效果一直以来,基于浏览器的 Web 程序动画效果常被人诟病,尤其是基于 JavaScript 的动画效果库相对于原生的应用程序来说,还是存在一定的差距,而刚发布的 Sencha Touch 1.1.0 版本就支持多达六种动画效果,分别是 cube、fade、flip、pop、slide 和 wip
9、e。以最为酷炫的 3D 旋转 Cube 动画 为例,它将当前显示的界面面板(称之为 Card)想象为立方体的一个面,而即将展示的 Card 作为相邻的另外一个面,以左上方的顶点作为旋转基点进行旋转,从而得到 Card 之间切换的动画效果。大家一定很好奇它是如何做到这一点的,我们通过查看该动画效果的源代码即可找到答案。图 5 Cube 动画效果示例在文件 sencha-touch-1.1.0srccoreAnim.more.js 中,可以看到以下代码片段清单 1this.from = -webkit-transform: rotate + rotateProp + ( + fromRotate
10、+ deg) + (showTranslateZ ? translateZ( + fromZ + px): ) + fromTranslate, -webkit-transform-origin: origin ; this.to = -webkit-transform: rotate + rotateProp + ( + toRotate + deg) translateZ( + toZ + px) + toTranslate, -webkit-transform-origin: origin ;由于 Sencha Touch 的动画组件是基于 Webkit 核心的浏览器,所以其动画效果实际
11、上是基于 Webkit 的 3D 转换引擎,代码中 this.from 指的是当前 Card 如何旋转消失的属性,而 this.to 指的是要目标的 Card 如何旋转得以呈现,具体 CSS 属性的含义可参考官方文档。基于 Web 的博客浏览示例:应用开发环境的搭建、代码结构及测试随时随地获取自己想要关注的信息是移动计算环境最直接的用途。本文将以一个简单的博客订阅与浏览程序为例,展示基于 Sencha Touch 进行移动 Web 应用开发的流程,帮助开发人员更快的熟悉该编程框架。博客订阅与浏览应用的主要功能是订阅自己关注的博客 RSS 源,浏览对应博客的主题列表,查看博文内容。为了实现以上需
12、求,开发人员需要完成以下几个步骤的工作。搭建开发环境第一,下载Sencha Touch 库文件,并将其解压到本地目录 %sencha-touch-home%;第二,进入 Eclipse Java EE IDE,创建一个名为 myblog 动态 Web 工程;第三,在本地安装 Apache Tomcat 6.0.x ,在 eclipse 中将其配置为 Web server 并将 myblog 工程部署其中以备测试;第四,安装 Andriod Virtul Machine 环境,用以启动一个虚拟设备来测试 Web 应用的效果。需要说明的是,对于静态的 Sencha Touch 工程,Tomcat
13、并不是必须的,可使用任意 HTTP Server 来部署应用,但由于本例中使用了 Servlet 解析 RSS 源来降低客户端负载,因此采用了 Servlet 容器 Tomcat。创建代码结构一个典型的 Sencha Touch 工程主要由几个部分组成:sencha-touch 库文件,JavaScript 文件,CSS 文件,图标文件以及静态 HTML 文件。sencha-touch 库文件至少要包含默认的 CSS 文件 sencha-touch.css 和默认的 JavaScript 文件 sencha-touch.js,值得一提的是,为了便于在开发调试阶段更准确地定位和解决问题,开发包中
14、还包含了 CSS 和 JavaScript 对应的 debug 版本,开发人员可在开发阶段使用该版本,而在产品部署阶段再替换为对应的正式版。图 6 工程目录结构创建 HTML 和 JavaScript 文件创建 Sencha Touch 应用的第一步就是创建一个 HTML 首页文件用于链接 Sencha Touch 库的 CSS 和 JavaScript 文件。我们博客浏览示例的 HTML 文件是 index.html,其内容如下:清单 2 My BLOG 当创建好 HTML 文件之后,接下来就需要创建应用程序的 JavaScript 文件 index.js,由于该示例是以浏览为主,因此选用
15、NestedList 组件作为 UI 界面的主体,相关代码如下:清单 3Ext.setup( icon : img/icon.png, tabletStartupScreen : img/tablet_startup.png, phoneStartupScreen : img/phone_startup.png, glossOnIcon : false, onReady : function() . var nestedList = new Ext.NestedList( fullscreen : true, title : 我的订阅博客, displayField : text, docke
16、dItems : topbar, bottombar , store : store, getDetailCard : function(record, parentRecord) return new Ext.ux.DescBox( value : Loading., scroll : direction : both, eventTarget : parent ); ); . ); );可以看到,index.js 的第一行代码调用了 Ext.setup() 方法,用以建立一个触控设备的 Web 页面,该方法可以为你的应用设置不同的启动属性和行为,例如示例代码中的:v icon,设置该应用默
17、认的图标;v tabletStartupScreen,该属性设置在平板电脑上的启动图标;v phoneStartupScreen,该属性设置在智能手机上的启动图标;v glossOnIcon,该属性设置是否在默认图标上呈现光环效果;v onReady,该方法会在页面加载完毕,浏览器中的 DOM 模型已经建立完成时被调用。由于为了保证程序在运行时所依赖的 JavaScript 文件都已经加载完毕,我们一般将应用启动的逻辑置于该方法内,类似于 Java 程序的 main 方法。在定义 NestedList 组件时,有四点值得我们注意:1. 界面布局:通过 dockedItems 属性,指明了 Ne
18、stedList 顶部和底部分别放置了工具栏 topbar 和 bottombar,topbar 主要用来便于用户登录和设置偏好信息,bottombar 主要是用来提供浏览博客时的一些常用操作,如订阅新的 RSS 源,删除选择的博客,刷新博客列表,给好的博文加星推荐以及回复功能。为了生成工具栏,需要生成一个 Ext.Toolbar 对象的实例,以 bottombar 为例,其代码如下:清单 4var bottombar = new Ext.Toolbar( dock : bottom, defaults : ui : plain, iconMask : true , scroll : hori
19、zontal, sortable : true, layout : pack : center , items : iconCls : add, handler : function(btn, event) addform.setCentered(true); addform.show(); , iconCls : trash , iconCls : refresh , iconCls : favorites , iconCls : action );该对象中主要定义了以下属性: dock,工具栏的放置位置,可选值有 top 和 bottom; defaults,默认图标的 UI 效果,其中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用SenchaTouch开发跨平台移动Web应用 精品资料 使用 SenchaTouch 开发 平台 移动 Web 应用 精品 资料
限制150内