Sencha Touch 入手


触控技术(touch-interface)可以带用户带来全新的体验。硬件层面仍属于输入设备(input device),也就是说,对于终端而言,究竟是键盘、触控还是鼠标,反正都是输入形式的一种,而输出方式一般是屏幕。不同的输入方式给用户带来的体验绝对是不同的。在手机上的用户体验攸关,因为在巴掌大块上面构建合理的布局输入方式的确需要花点心思。就像当红小生Apple的iPhone,它便很成功。看上去,iPhone除了削平的镜面外,无非只有一个按钮。无论这是否是一个大胆的设计,单单这一个的按钮足以让iPhone整体设计与传统机型划分开来,相对于那些密密麻麻1、2、3/a、b、c、d……和蹩脚的方向杆+按钮。简洁至上的iPhone蔚然成一代新的设计思潮,模仿者甚众(这是后话),但输入方式的焦点是,它的多点触控技术,突破过往旧机型同一时间只能接收单点的信号,做到可以支持多点的感触。这一点在iPhone大规模使用后可以说是划时代的。普通应用打打电话或输入文本的话,多点触控应用可能有限,但亲自玩玩iPhone的游戏,便发现多点触控这对“无形的手”是多么地重要。或许受众者应该都有像这样的体验,多点控制的精彩程度足以让其他的按钮成为多余的摆设。
如上图是几个手势的示意图,分别是单击/双击、抓捏、拖动、旋转等,都是用手指头操作的界面(有相应的事件)。
那么,开发触控需要什么技术?开发难度怎么样?
标准技术HTML5/CSS3/ECMAScript便可以适用于Apple iPhone、Pod Touch、iPad、Android主流机型。尽管具体硬件机型可能不尽相同,却可以把一些共性的集合抽象出来,形成一套通用的API,即可开发原生的触控程序( native apps,见《Introducing Sencha Touch》)。我们的目的,就是掌握HTML5/CSS3/ECMAScript技术后,大致有一定实现的用途,攻克之后剩下就是对付一些技术细节。所谓的共性集合便是文本介绍的Sencha,专为触控技术而设的JavaScript/ECMAScript框架。
跨平台的好处人人受益——怎么个跨法却是大问题。像Sun翻版那样一个新的Java传播到不同的主机?貌似不能人人慷慨接纳,典型的就如MS的做法:一开始未发现Java的潜力,欢迎JRE加盟到Windows 98;后来见Java日渐走俏,MS说撤就撤,弄得与Sun之间好不和气……呵呵,依笔者看来,那又何必呢,同一一个标准大家去执行不就好?说着容易,做起困难。前面是充满着艰难和曲折的道路——这儿真不是俺矫情而发。嗯,一种力量未成为真正的力量之前,或者,它是不会轻易地闪其锋芒;或者,它本来就是一种沉稳的力量,当你意识到它的时候业已发现被它包围了;或者,如温水“煮”青蛙那样,无论怎么样,结局总是按照节目脚本那样篇排的。总之,一旦到达了前所未有的阶段,不是“默认”那么简单,而是“承认”了,无论你心里是否排斥它都好。再绝一点就是到达膛乎后矣的阶段。呵呵,所说的主角是谁?再挑明就罗嗦了。——不过看官可能会认为,你说的,事后诸葛,尽管未免如此,但可见,亦不无事物发展之普遍原理。
如果说以上的几点属于“心理暗示”的话,那么为大家介绍的这一篇博客文可以说是一个真实的个案了(by Michael Chen《随想:企业系统集成》)。
[indent]以前无数次听说开放标准会使系统造价更经济。现在看起来确实如此。观察我前一个项目,一个Outlook插件,运行在Outlook进程中的WPF Rich Client程序。微软乱糟糟的技术在Outlook中得到了集大成。由于对通信内部状态的未知,我们不得不写了很多的Hack方法来绕过各种限制,得到的恶果是严重的性能问题我们不得不推迟上线。痛定思痛,在下一个项目中坚决采用了Web技术,而通过iCalendar协议与Outlook交互。这种方式下,系统之间通过开放标准来隔离彼此的变化,两边的编程模型清晰而简单,没有无谓的猜测。
[/indent]总之一句话,向标准靠拢就对了。
“发动一切可以发动的机会”,吸引尽可能多的开发人员来自我儿这来,——不就求个人丁兴旺嘛,系统集成商在面向开发者提供API的时候也是如此的考虑着。不用多说,懂Web的人群自然不在小数,所以,无论Apple的iOS还是谷歌的Android,相中Web标准技术作为前端架构中一部分很大一部分原因就是Web技术覆盖广,简单易用,就它负担表示层/UI视图的任务吧。当然,标准技术仍然是一个可选项,我们熟悉Flash的话当然也可以这些终端上运行Flash,或其他的解决方案。另外明显一点我们不能忽视的是,大家对HTML/CSS/JavaScript掌握的知识与技能,在过去几年的累积中,已经有长足的储备,或者说人才累累。应该这样讲,只要具备若干年的工作经验,HTML/CSS/JavaScript应该没有问题的。好比我自己的例子来说,关于Flash、Sliverlight是重要的前端技术,同样在前端系统上大放异彩。简单的一些效果和基本操作我都懂,但若按照现在自己的水平和所需的时间来说,再去“精研”的话,俺得借用一句话描述之:“不敢僭越”。
前面说道“原生应用程序”,——说实话,我刚听到的时候就觉得有点悬。Native之所以Native,必定潜入到手机底层,有着不容小觑的难度。况且那么多的机型,怎么保证都让你一个Sencha可以搞掂?——现在由于只是纸上谈兵,Sencha充其量也只是JS库,不可能像C那样如入无人之境,故保守估计Native的意思是基于Webkit之上的功能再造和封装,做做UI先。许多系统集成商都使用Webkit这一款开源浏览器引擎,具有覆盖面广、内部执行效率高、代码规范(这点据说是Firefox所常被人诟病的)等的好处。
有了手机制造商支持浏览器,浏览器当仁不让地延续了在桌面的潮流与点滴,这样,原本表现尚可的Ext JS迁移到手机上也只是时间的问题,大可顺理成章地来到移动终端,无须重复再造一套UI组件。

原文作者: frank
转自:http://blog.csdn.net/zhangxin09/archive/2010/07/03/5710899.aspx