自Action Bar設計概念在Android 3.0(API 11) 中被Google引入以后,Action Bar這種設計模式迅速被各APP廠商(例如Evernote)所采納。
但Action Bar雖好,它出現之初Android官方版本的ActionBar 只支持Android 3.0 (API 11)及以后的系統版本。而由於Android眾所周知的碎片化問題,當開發者試圖在minSdkVersion<10的系統上使用Action Bars時只好使用第三方開發者發布的ActionBarSherlock。
還好,在Google I/O 2013后,官方版本的兼容 Android 2.1(API 7)及其以后版本的ActionBarCompat終於發布了 (包含在Support Library v7 r18中)。原本使用ActionBarSherlock的一眾應用們也開始了升級至ActionBarCompat的工作。本系列教程將為大家講述如何使用ActionBarCompat實現Action Bar,並解答大家在初次使用ActionBarCompat時可能遇到的問題。
開發環境: System OS: Mac Mountain Lion IDE: Android Studio 0.2.10 Simulator: Genymobile
預備知識(也是必備工作)
在正式上手ActionBar之前,我們有必要理清一些概念。這對以后減少感念混淆,避免造成不必要的bug很有幫助。
Action Bar,ActionBar,ActionBarCompat是什么關系,有什么區別么?
Action Bar 是一種UI設計,在應用界面的最上端,放上圖標,文字,按鈕什么的,形成一個Bar實現應用內導航(Navigation),與用戶交互等功能。
這是一個典型的Action Bar,1是App的Logo圖標 Logo右邊是應用的名字(這里圖標和右邊跟着的字符串都是可以在程序中更改的);2是安放在Action Bar中的一系列Action Items (這里可以看到有搜鎖圖標,以及購買圖標) 3是Action Overflow,當你在Action Bar中放了太多的Action Items,那些受空間限制沒辦法單列出來的Action Items,就被統一放到Action Overflow里了。點擊Action Overflow,就會出現那些隱藏的Action Items.
那什么是ActionBar呢?ActionBar是用來實現Action Bar這種UI設計的API。自Android 3.0 (API 11)起,Android SDK里就開始提供ActionBar API, 通過調用ActionBar, 可以對Action Bar里的icon(比如上面例子里的紅色膠片狀圖標), title(例如上面例子中Google Play這幾個字), Action Items(上面例子中的搜索以及購物包按鈕),Action Overflow等進行設置。
那ActionBarCompat又是什么呢?剛才說了,ActionBar API是在Android 3.0及其以后版本的Android系統中才有的,也就是說經典的Android 2.1 (API 7)里,你是沒有辦法調用ActionBar API的,因為當年Google可沒有推出Action Bar這種UI設計模式,自然也就沒有ActionBar API了。於是為了方便開發者在Android 3.0以前版本的系統上開發含有Action Bar的應用,Google 在Google I/O 2013后發布了Support Library r18,這里面就包含了在Android 3.0以下版本(一直到Android 2.1)中實現Action Bar的API。這個API實現了兼容>API7的ActionBar,所以叫ActionBarCompat (Compat是兼容性Compatibility的縮寫)。
因此,如果你只需要在Android 3.0以上系統中開發含有Action Bar的應用(minSdkVersion>=11),那么直接在Activity中調用ActionBar API (也就是android.app.ActionBar)就可以了。而如果需要兼容Android 2.1~3.0之間的系統,你就必須使用ActionBarCompat (在建立工程的時候,就必須將Support Library r18包[android.support.v4.jar 和android.support.v7.jar]含至編譯路徑,而且要使用ActionBarActivity 而不是Activity),此時調用ActionBar API的時候 ActionBar其實來自於android.support.v7.app.ActionBar。
檢查Android SDK Manager中是否已經安裝了Support Library revision 18
ActionBarCompat 依賴於Android Support Library, revision 18 所以在着手編程前,需要確保你的Android SDK中已經包含有最新的Support Library. 方法如下:
1. 打開Android SDK Manager
2. 確保已經安裝android support library r18 (revision 18)
好了,准備工作就緒。在下一講中,我們就要開始動手寫第一個含有Action Bar,並且能運行在Android 2.1及更高系統版本的Hello World 應用了。
我的聯系方式:
或
mobiletuts.me#gmail.com (replace #with @)
ActionBarCompat 教程-2. 上手ActionBar