[Android]AndroidDesign中ActionBar探究1
概述
从Google IO 2013大会以来越来越多的Android应用开始遵循Android的设计风格,简单的就是google play和Gmail,在国内我们常用的软件像知乎、印象笔记,主要的界面主要是左侧的抽屉菜单(参照)、顶部和底部的ActionBar(参照)等。由于以前都是遵循Ios的设计开始开发的一些,现在在公司,公司开始推崇Android Desgin(我们公司总是走在前列啊,现在Team 开发的 Version Control开始在Git开发),我们也必须要看下ActionBar。

1. 应用图标
应用图标是应用的标志。在应用图标位置摆放你自己的 logo。注意: 如果当时应用不再顶层界面,那么在图标左边放置一个向左的箭头,表示“向上”按钮,使用户可以回到上一级界面。“向上”按钮的更多细节,请查看 导航 一节。
应用图标以及有和没有“向上”按钮的状态。
2. 视图控制
如果你的应用通过多个不同的视图显示数据,这个区域将允许用户切换视图。可以使用下拉菜单或者标签控件来实现。
如果你的应用没有多个视图,你可以在这里显示不可操作的内容,例如标题或者品牌信息。
3. 操作按钮
显示应用中最重的操作。如果图标放不下了,就自动移入“更多操作”菜单。
4. 更多操作
将较少被用到的操作放在这个菜单里。

当你要把操作放在多个操作栏中的时候,一般有三个选择:
- 1. 操作栏
- 2. 顶部栏
- 3. 底部栏
如果用户可以导航到应用的上一级屏幕,那么操作栏中至少要放置“向上”按钮。
为了让用户可以快速切换屏幕和视图,在顶部栏中放置标签或者下拉菜单 (spinner)。
当没有足够的空间显示操作图标时,使用底部栏。
ActionBar翻译成汉语就是操作操作栏,如我们的搜索,分享,返回,分类等都可以加入到ActionBar中,这样对于屏幕空间有限的手机上,ActionBar成了万能的Bar。
使用
添加操作栏
ActionBar在以前使用,或者是在3.0+开发,或者是在2.1+导入ActionBarSherlock(这个在去年V7包加入ActionBar后,这个库也光荣退休了),一般开发使用都是要考虑2.2,2.3这两个平台,我们就要考虑V7这个官方推出的支持包。
3.0+
<manifest ... >
<uses-sdk android:minSdkVersion="11" ... />
...
</manifest>
2.1+
1 Activity继承于V7中的ActionBarActivity
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
2 Activity的thme
<activity android:theme="@style/Theme.AppCompat.Light" ... >
<manifest ... > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="18" /> ...</manifest>
这样在Activity的顶部就会有一个ActionBar.
在ActionBar上我们还可以添加一些类似于Menu的item:
@Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
menu/main
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.actionbardemo.MainActivity" > <item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/> </menu>
menu/main这个布局中的属性中有一个app:showAsAction就是V7包的属性。
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
移除操作栏
如果你不想为一个特定的Activity设置Action Bar,设置Activity主题为Theme.Holo.NoActionBar。 例如:
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
您还可以在运行时通过调用hide()隐藏Action Bar。例如:
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
当Action Bar隐藏,系统的Activity调整布局来填补所有可用屏幕空间。你可以通过调用show()显示Action Bar。 隐藏和删除操作栏可能会使Activity重新调整布局,重新使用Action Bar所占用的空间。如果你的活动经常隐藏和显示操作栏(如在Android应用程序库),你可能想用叠加模式。叠加模式布局在Activity的顶部,而不是在屏幕空间上的Action Bar。这样,你的布局可以在Action Bar隐藏和重新出现时保持不变。要启用覆盖模式,创建Activity主题并且将android:windowActionBarOverlay属性值设置为true。欲了解更多信息,请参阅样式的Action Bar章节。
响应ActionBar的点击事件
放置好了Menu items后,为了实现点击我们要实现onOptionsItemSelected(),当我们点击一个Item后,会根据item的id来响应。
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
添加上一级Button
为了能有用户返回上一级操作,我们可以通过返回键,但是Google又推出一个可以取消返回键这个构想,在ActionBar上,有为用户特定设置的返回上一级的Button。在Android4.1和v7包中都有体现,给出了上一级the parent activity。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.actionbardemo.MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.actionbardemo.Second"
android:label="@string/title_activity_second" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.actionbardemo.MainActivity" />
</activity>
</application>
[Android]AndroidDesign中ActionBar探究1的更多相关文章
- [Android]AndroidDesign中ActionBar探究2 嵌入Fragment
上一节我们只是简单了介绍了Android Design风格中的ActionBar的简单实用,如添加MenuItem,这节我们会进一步了解ActionBar的其他功能. 在Android Develop ...
- android中Actionbar详解
1.什么是Action BarAction Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:1)突出显示一些重要操作(如“最新”.“搜索”等)2) ...
- Android中ActionBar及Overflow的显示
最近在按照Android的API文档学习Android中actionbar的使用,Action bar 最基本的形式,就是为 activity 显示标题,并且在标题左边显示一个 app icon.在这 ...
- Android中ActionBar和ToolBar添加返回箭头
感谢大佬:https://blog.csdn.net/baidu_32682229/article/details/77927745 ActionBar添加返回箭头 //onCreate方法中 Act ...
- Android开发中遇到的requestFeature() must be called before adding content异常
缘起 上一篇博文中讲到了几种实现全屏显示Activity内容的方法.然而实际在实现中发现了一些问题,在本篇博文中进行总结下.首先交代一下开发环境,本人使用的是Android Studio 1.5.1, ...
- Android开发中,那些让您觉得相见恨晚的方法、类或接口
Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...
- Support Library官方教程(3)android studio中导入支援包
Support Library Setup How you setup the Android Support Libraries in your development project depend ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- 转: Android开发中的MVP架构详解(附加链接比较不错)
转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...
随机推荐
- git 安装与使用场景
1. 安装 yum install git #自动安装依赖 centos sudo apt-get install git #ubutu http://msysgit.github.io/ #wind ...
- Mahalanobis Distance(马氏距离)
(from:http://en.wikipedia.org/wiki/Mahalanobis_distance) Mahalanobis distance In statistics, Mahalan ...
- application与cache
每个项目都有一些全局,常用的信息,而这些信息如果在每次使用时都载入,那必将耗费很大的资源,特别是对访问压力大的系统.因此,这个情况中,把这些全局信息放到缓存中是很必要的,放在缓存中可以使得数据能够很快 ...
- Painter 12安装教程
1 首先打开激活器 2 开始安装,点击我有序列码,把激活器中的序列码粘贴到安装文件中. 3 安装完成后,点击activate option选项,点击电话联系: 激活成功
- 整合spring roo,maven,mybatis,spring-flex,blazeds,mysql
1. 下载spring roo,设置环境变量ROO_HOME,和path,classpath. 使用CMD命令行找到工作区间,新建工程目录转到工程目录:mkdir ten-minutes $ ...
- Hadoop on Mac with IntelliJ IDEA - 7 解决failed to report status for 600 seconds. Killing!问题
本文讲述作业在Hadoop 1.2.1完成map后ruduce阶段遇到failed to report status for 600 seconds. Killing!问题的解决过程. 环境:Mac ...
- 番茄钟App(Pomodoro Tracker)
最近为了学习Swift编程语言,写了一个番茄钟的App(Pomodoro Tracker).刚上线的1.2版本增加了Apple Watch的支持. iPhone版 Apple Watch版 如果你跟我 ...
- 【转】struct和typedef struct
原文:http://www.cnblogs.com/qyaizs/articles/2039101.html 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用type ...
- 【M28】智能指针
1.什么是智能指针? 所谓智能指针就是,看起来,用起来,感觉起来都像原始指针,但是提供了更多功能. 2.使用智能指针取代原始指针,可以获得更多的控制权.如下: a.在构造和析构的时候,可以做一些事. ...
- AIM Tech Round (Div. 2) D. Array GCD dp
D. Array GCD 题目连接: http://codeforces.com/contest/624/problem/D Description You are given array ai of ...