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. Ansible常用模块命令

    Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...

  2. RocketMQ 运维指令

    1.1. 控制台使用 RocketMQ 提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker 等信息的管理 登录控制台 首先进入RocketMQ 工程,进入/RocketMQ/bin ...

  3. canvas里调用getImageData的报security的问题

    canvas元素支持绘制任意图片元素: var ctx = document.getElementById("canvas").getContext("2d") ...

  4. [leetcode] 7. Binary Tree Level Order Traversal II

    这次相对来讲复杂点,题目如下: Given a binary tree, return the bottom-up level order traversal of its nodes' values ...

  5. SQL Server中CROSS APPLY和OUTER APPLY应用

    1.什么是Cross Apply和Outer Apply ? 我们知道SQL Server 2000中有Cross Join用于交叉联接的.实际上增加Cross Apply和Outer Apply是用 ...

  6. 其他信息: 实体类型 xxxxx 不是当前上下文的模型的一部分。

    我是手动添加的EF类的,   解决方法: 没有在DbContext 添加  public virtual DbSet<xxx> xxxx{ get; set; } 导致不在上下文中

  7. 开发一个小的php扩展

    今天试了一下在php添加扩展,看了挺多资料,细节上不一致,其他大体是差不多的. 我们来开发一个叫ccvita_string的函数,他的主要作用是返回一段字符,对应的php代码可能如此: functio ...

  8. 【OCP题库-12c】最新CUUG OCP 071考试题库(70题)

    70.(31-2)choose the best answer: View the Exhibit and examine the structure of the Book table. The B ...

  9. 【OCP-12c】CUUG 071题库考试原题及答案解析(14)

    14.(6-13) choose the best answer:View the Exhibit and examine the structure of the ORDERS table.Whic ...

  10. JavaScript一个页面中有多个audio标签,其中一个播放结束后自动播放下一个,audio连续播放

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...