Android大变脸。。。

2月14日情人节,一向善于挑日子的Google在其Android官方Blog上公布了新版Android SDK发布的消息(根据网站上的日期,SDK应该是2月12日就更新了,看来Google的公关做得确实很不勤劳...)。这次发布的SDK版本号为 M5,理论上这应该会是第一轮比赛初赛前最后一个版本了,在此前,为了大家更好适应新的SDK,Google将第一轮比赛初赛的结束日期顺延了将近一个半 月,这意味着此版SDK会有巨大的变化。但当我迫不及待跑起新的模拟器的时候,还是着实吓了我一大跳,心里只会叨念三个字,大变脸。
所 谓“大变脸”有两个层面的意思,一个是使用了全新风格的界面上。随手截了几个比较有特点的界面图,从中可略见一斑。一直做Android的同志们都可能会 有感觉,早先的Android的界面,还是比较中规中矩的,风格颇为“传统”,与Symbian等操作系统都会有很多相似的界面和操作方式。而这一次,算 是真的做出了一些特色。
图1:全新的初始界面
图2:全新的Contacts以及弹出菜单
图3:全新的Notification系统
图4:全新的Expanded菜单
套 用奥林匹克精神的经典台词,新的Android界面算是更大,更Q,更花哨了。更大是最显而易见的,现在所使用的图标和字体比老的起码大了一两倍,一屏能 显示的内容少了一大半,但格外的清晰耀眼。我个人分析这和Android的定位密切相关,Android定位在有一定硬件基础的手机平台上,它不再考虑对 低配置手机的支持。一定的硬件基础毫无疑问包括足够大的屏幕,特别是越来越流行的大触摸屏。更大的图标和文字可以让用户更充分享受大屏幕带来的更美好的视 觉效果,同时也可以更方便进行触摸操作。
当然这种新界面和iphone的革命性UI不是同一个概念。iphone的一些酷酷的UI特性(双触点, 自动关闭触摸屏等等...)都依赖于XX感应器等硬件基础。而Android毕竟是一个开放的软件系统,它再需要高的硬件基础,也不可能高到iphone 的层度。但在新的SDK中,可以看到Android开始以另外一种方式兼容不同的硬件。在Activity中,新增了Touch Mode的接口,用以兼容在有触摸屏的条件下提供更好的用户体验(主要是焦点上...)。我想这样的根据不同硬件条件提供的可选API会越来越多,当然这 样的API需要足够简单好用,不然会给开发人员增加很大的负担。
另外很有趣的是Google在Android中采用了很Q的风格,图标都是可爱的圆弧角,字体也是圆圆的感觉。这估计是Android开发工程师们好这口,这一点可以从早先Google的展示视频可略见一斑。
伴随着Q而来的,是更为花哨的界面风格,大大的图标随处可见,颜色也是颇为的艳丽,更有趣的是其ViewGroup的动画效果比原来更为的夸张和好用。
当然所有这一切界面风格的变化都不是无源之水。为了更好支持新的界面,所有的View的解析方式都有了全新的变化,并且Android的 CursorAdapter,Notification,ViewGroup,Menu等等类都做出了很多的改变, SimpleCursorAdapter可以直接支持图片的显示,避免了更多的人重复造这个轮子;Notifaction变成了图3这样,有图标,有更丰 富的内容;ViewGroup支持了更好的动画显示,可以从Demo中看到其效果;Menu更是变化巨大(如图2,图4所示),带图标的Menu可以很容 易的搞定。
当然,这一切也不只是花花架子,为了更好的显示图标、动画等等,View引入了Drawing Cache(其实就是双缓冲策略...)等新的机制,通过延迟、晚绑定等等底层方式,提高加载的效率。
新界面的变化,使得用户的使用上也需要一些的改变。新的起始界面,如图1所示,采用了侧边栏的方式。最上面的图标(比如APIDemos, Chamberlain)是根据你上次使用状况动态更新的。虽然很酷,但我个人觉得蛮乱蛮不好用的。新的Notification不再是通过上下键弹出, 而是需要下拉出现,虽然还是很酷,但同样还是不够好用。新的菜单进行了分离,分成了Icon menu, Expanded menu和Context menu。最一般的菜单采用Icon方式,大于6个可以通过more按钮转换成为Expanded方式,而Context menu需要长按2秒Center button才能够弹出,所有一切都违背了一般的操作方式,还是那句,很酷,但需要时间的考验。

新的SDK另一个巨大的变脸就是大量API的变化。这种变化是老的项目的移植非常痛苦,但从长远来看绝对是一个好事。
API最多的变化就是命名的变化,很多不合理的命名被更改。一些不清晰的API指定的更为明确,比如一些与SQLite相关的API都被附上了 SQLite前缀;一些原来在文档中标明过期的方法,在这一次彻底被废除了,比如ContentProvider的query方法;一些不统一的API也 进行了调整,比如ListView中的position和index统一成为position,解决了这一我原来颇为头疼的问题;一些命名风格进行了统 一,比如URI采用统一的Uri,ID采用了统一的Id;其他方面,AndroidManifest.xml中的一些项也做出了统一,能够能容易的被理 解。总之这样的变化还有很多,大量的API更为的清晰,易理解。这也是天下所有被重金诱惑的程序员帮助Google测试的结果。
还有一些类进行了重构,进行了功能的分离和扩充。最典型的是ContentURI,被拆成了ContentUris这个功能类和Uri这个实体类,对程序 员的使用做出了更好的引导作用;而另一个典型的变化是Cursor,添加了一个extras接口,可以传出附加的数据,这简直是一场及时的一塌糊涂的雨, 使得原来很多很难做的是变得简单;还有一个是Notification进行了拆分,Notification现在只是指首页顶上的那个图标,那些临时的弹 出文字或视图被分离为Toasts,这对强扭的瓜终于得以各奔东西,单飞各自发展。
一个比较特别的变化是Alerts,采用了新的Builder链式构建方式,而不是通过构造方法进行构造,其构造的灵活性更大了。与此相反,Notification则拥有了一个更长的构造函数,用起来及其的不爽,个人觉得这不是一个良好的变化。
此 外,Android也添加了一些实用的类。新增的ExpandableListView,是一个二级树状AdapterListView,这是一个非常非 常实用的视图控件。我想这是大量开发人员提出需求的结果。我个人原先想自定义这个轮子的,后来采用一级模拟二级的方式实现。这一下好了,省心了。另外一个 革命性的东西就是Search Manager接口,这是一个hooker接口,Android为你的Activity做了一个很酷的Search界面和接口(可以参看Sample), 通过实现改Hooker可以实现统一的Search,这个对很多和我一样做Search的人影响极大,从短期看,移植非常痛苦,从长线看这是一个颇有 Google味的变化,对Search有很大的推动作用。另一个比较Google味的变化,是将XXMP更名为GTalk,Google野心彰显无遗。

除了这些变脸,SDK这次对插件进行了不小的改变,支持了多设备,将设备视图和Process视图合并;并添加了新的traceview工具,这是一个可视化的日志分析工具,这个工具使得Android的日志系统更为的强大,调试时间有望进一步降低。

所有这些只是根据我这两天的一些观察得出来的,只是盲人摸象而已。更全面的内容可以参考这里这里这里。很遗憾的是,大部分SDK的文档都没有跟上,所以如果想学习的话,希望大家直接看SDK Sample,而不要阅读文档中的示例。
进行了这一些改变后,Android越来越完善,Google的投在大奖赛的钱看来不会白花。对于所有做Android的人,这也是一个更好的机会,谁能适应新的SDK,谁就能占领到更好的位置。

posted on 2008-02-16 12:30  duguguiyu  阅读(2411)  评论(4编辑  收藏  举报

导航