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,誰就能佔領到更好的位置。