[Android]AndroidDesign中ActionBar探究1_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > [Android]AndroidDesign中ActionBar探究1

[Android]AndroidDesign中ActionBar探究1

 2014/5/10 19:21:40  Cyning  博客园  我要评论(0)
  • 摘要:概述从GoogleIO2013大会以来越来越多的Android应用开始遵循Android的设计风格,简单的就是googleplay和Gmail,在国内我们常用的软件像知乎、印象笔记,主要的界面主要是左侧的抽屉菜单(参照)、顶部和底部的ActionBar(参照)等。由于以前都是遵循Ios的设计开始开发的一些,现在在公司,公司开始推崇AndroidDesgin(我们公司总是走在前列啊,现在Team开发的VersionControl开始在Git开发),我们也必须要看下ActionBar。1
  • 标签:android NBA

概述

  从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+

class="java"><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。 隐藏和caozuo.html" target="_blank">删除操作栏可能会使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>
上一篇: 从面试角度谈360和阿里的测试文化 下一篇: 没有下一篇了!
发表评论
用户名: 匿名