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. 479. Largest Palindrome Product

    class Solution { public: int largestPalindrome(int n) { vector<,,,,,,,}; ]; } }; 这里的穷举法,你不得不服

  2. Android 上传文件到XP

    Android部分: AsyncHttpClient client = new AsyncHttpClient(); RequestParams requestParams = new Request ...

  3. 8-5 Navicat工具与pymysql模块

    一 Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 需要掌握的基本操作 ...

  4. 6 Django 的视图层

    视图函数 一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应.响应可以是一张网页的 HTML 内容,一个重定向,一个 404 错误,一个 XML 文档 ...

  5. CYUSB3014固件部分低版本工程在Eclipse中编译得到img文件时无效的解决方案

    最近在做基于我们AC6102开发板的UVC图像视频方案,下载了官方的an75779应用工程,但是倒入到FX3—SDK自带的Eclipse中后,却无法编译生成img文件,经过比对后确认是生成该文件的命令 ...

  6. 在github创建用户

    在Github注册账户 第一个是创建用户名,第二个是填写邮箱,第三个是设置密码 进入给github会让你选择账户类型 第二步完成后会让你完成邮箱的验证 验证完邮箱以后此时就验证成功了点击绿色的 let ...

  7. osx上使用'cd'命令跳转到别名(alias)目录

    在mac上使用windows的共享目录时,在terminal中时法使用cd的,会提示"xxx 不是目录",经过一番的查找,发现了Mac Terminal 'cd' to folde ...

  8. .Net core 2.0的数据初始化

    在StartUp.cs里面,添加Seed方法 public static void Seed(IApplicationBuilder applicationBuilder) { using (var ...

  9. 网络正常只有自己访问网站异常一度让你怀疑,是不是被黑了!域名解析异常是如何发生的,如何解决处理及C#编程实现一键修改Hosts文件

    首先大家要知道在浏览器上浏览虚拟主机,必须使用Hosts文件或域名系统(DNS)实现主机名到IP地址的解析.在局域网中用Hosts文件或DNS都可以,在Internet上只能用DNS了. 1.当用户输 ...

  10. UWP开发入门(三)——{x:Bind}扩展标记

    上周打炉石打得太晚……忘记更新了,本周补上.本篇我们讲一下{x:Bind}扩展标记.{x:Bind}扩展标记也是Windows 10 Uinversal 新增的内容,按官方的说法是 {Binding} ...