http://www.mobiletuts.me
自Action Bar设计概念在Android 3.0(API 11) 中被Google引入以后,Action Bar这种设计模式迅速被各APP厂商(例如Evernote)所采纳。
class="alignnone size-medium wp-image-88" src="/Upload/Images/2013101310/505B79174033F9BC.png" alt="evernote_android_actionbar" width="574" height="374" />
但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
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。
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 应用了。
我的联系方式:
http://www.mobiletuts.me
或
mobiletuts.me#gmail.com (replace #with @)