http://www.mobiletuts.me

自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 应用了。

我的联系方式:

http://www.mobiletuts.me

mobiletuts.me#gmail.com (replace #with @)

ActionBarCompat 教程-2. 上手ActionBar

用AndroidSDK中的Face Detector实现人脸识别

ActionBarCompat 教程-实现Action Bar的更多相关文章

  1. Android Action Bar简介

    Android Action Bar简介 Design: Action Bar Action Bar是在屏幕顶端的一部分内容,通常在整个app进行中都保持存在. 它提供了几个关键的功能: 1.使得重要 ...

  2. Android 自定义title 之Action Bar

    Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆   微信分享:   Action Ba ...

  3. 布局文件预览:Rendering Problems Exception raised during rendering: Unable to find the layout for Action Bar.的解决

    在android studio或者eclipse中打开layout文件,发现不能预览布局,提示以下错误: Rendering Problems Exception raised during rend ...

  4. 【Android】Android之Action Bar

    Action Bar是在窗口上指示用户位置的组件,同时给用户提供导航和操作.使用Action Bar可以让你的应用在不同配置的屏幕上看起来比较一致.在开始之前,先了解一些相关的术语: Action B ...

  5. [转]【android studio】解决layout预览出现Rendering Problems Exception Unable to find the layout for Action Bar.

    在android studio中打开layout文件,发现不能预览布局,提示以下错误: Rendering Problems Exception raised during rendering: Un ...

  6. Action Bar详解

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  7. show drop down menu within/from action bar

    show drop down menu within/from action bar */--> pre { background-color: #2f4f4f;line-height: 1.6 ...

  8. Android开发之Action Bar

    Action Bar代替了传统的位于设备屏幕的标题栏,主要用来显示应用程序的图标和活动的名称以及添加定制动作项等功能. 1. 显示和隐藏Action Bar 显示和隐藏Action Bar 一般有两种 ...

  9. Android Action Bar 详解篇 .

    作者原创,转载请标明出处:http://blog.csdn.net/yuxlong2010 作为Android 3.0之后引入的新的对象,ActionBar可以说是一个方便快捷的导航神器.它可以作为活 ...

随机推荐

  1. Myeclipse的webservice本地监听设置(一个简陋的代理)

    (1) 首先打开Myeclipse,然后选择window--->show view ---->other (2)搜索tcp,然后找到如图的样式 (3)选中,点击ok (4)弹出下图界面 ( ...

  2. 编译hadoop的libhdfs.a

    进入hadoop-hdfs-project/hadoop-hdfs/src目录,执行cmake以生成Makefile文件. 如果遇到如下的错误: ~/hadoop-2.7.1-src/hadoop-h ...

  3. SQL描述(2)

    很久之前就想写出来,就是因为自己太懒,憋了怎么久.本文关于使用ORACLE分析函数对一些经济指标进行计算.表indi_value有3个关键的字段:indi_date,indi_value,indi_i ...

  4. Java动态代理(一)动态类Proxy的使用

    1.什么是动态代理? 答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的接口.代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统 ...

  5. delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  6. 使用python读写excel

    项目中要在excel要跨工作簿根据一列数据获取另一列的数据,而excel本身的函数vlookup一直不太好用,只能用程序进行处理了,最近刚接触了python,灵机一动使用Python进行处理,先将js ...

  7. centos7怎能开机设置文本界面

    rm -f /etc/systemd/system/default.target 设置命令行级别方法:ln -sf /lib/systemd/system/runlevel3.target /etc/ ...

  8. maven项目打jar包

    打包有两种方式: 1.直接 项目--右键--export,选择JAR file打包(不推荐这种方式): 这样直接打的包通过java -jar 会提示“没有主清单属性”,需要修改jar包中的MANIFE ...

  9. spark任务提交到yarn上命令总结

    spark任务提交到yarn上命令总结 1. 使用spark-submit提交任务 集群模式执行 SparkPi 任务,指定资源使用,指定eventLog目录 spark-submit --class ...

  10. Angular之constructor和ngOnInit差异及适用场景

    constructor会在类生成实例时调用,Angular无法控制constructor,constructor中应该只进行依赖注入而不是进行真正的业务操作 ngOnInit属于Angular生命周期 ...