Action Bar、ActionBar、ActionBarCompat
Action Bar官方文档如下描述:
The action bar is a window feature that identifies the user location,
and provides user actions and navigation modes. Using the action bar
offers your users a familiar interface across applications that the
system gracefully adapts for different screen configurations.
ActionBar:
ActionBar是用来实现Action Bar的官方API
ActionBar API是在Android 3.0及其以后版本的Android系统中才有的,之前的版本是无法调用ActionBar API的。为了实现兼容,JakeWharton(一个非常帅的大牛,^_^)开源了他开发的ActionBarSherlock框架(可以在所有的Android版本上实现ActionBar的效果),此为背景。
ActionBarCompat:
此后为了方便开发者在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的缩写)。
准备工作
1、首先确保Android SDK包含最新的Support Library,具体如下:
Eclipse —> window —> Android SDK Manager —> Extras —> Android
Support library
2、准备Library
File > Import > Android > Existing Android Code Into Workspace,
之后选择目录:
Your ADT Bundle Path\sdk\extras\android\support\v7\appcompat,确定。
3、使用 Action Bar Style Generator 创建符合需求的样式
Action Bar Style Generator工具的使用方法请自行Google
创建好之后,下载到本地,解压,下面会用到
正式开始
1、创建项目
具体过程不再赘述
2、引入 ActionBar Compat Library
项目右键 —> Properties —> Android —> add —> 选择appcompat —> 确定
3、替换资源
将准备工作第2步解压后的res目录替换上一步创建项目中的res目录
4、修改AndroidManifest.xml文件
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
</application>
只需将上面代码中的
android:theme="@style/AppTheme"
改为
android:theme="@style/Theme.AppCompat.Light"
5、修改菜单文件(默认menu —>activity_main.xml)
修改后如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:test="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/phone"
android:icon="@drawable/ic_launcher"
test:showAsAction="ifRoom|withText"/>
</menu>
注意:
xmlns:test="http://schemas.android.com/apk/res-auto"
这行代码是新加的,xmlns:test中的test为自定义前缀,需与showAsAction前的test保持一致。
6、修改MainActivity
将
public class MainActivity extends Activity
改为
public class MainActivity extends ActionBarActivity
做到这一步,我们已经可以看到ActionBar的效果了,心急的同学可以先运行一下看看右上方有没有一个机器人的图标。
有的话,恭喜你,你已经成功一半了。如果没有,检查一下步骤是不是漏掉了什么。
效果图如下:
先休息下,下篇文章再来实现微信的导航功能。
如发现文字失误或程序Bug,请留言反馈,万分感谢!!!
作者:小蚂蚁
于 2014 年 03月 25日
上海