`
huaxin803
  • 浏览: 113403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 用户界面---操作栏(Action Bar 二)

 
阅读更多
选择操作项

通过评估一些关键的特性,你应该仔细的选择选项菜单中的那些菜单项应该作为操作项来显示,通常,每个操作项应该至少满足下列特性之一:

1.经常使用:用户百分之七十以上的访问都需要使用的操作,或者是要连续的多次使用的操作。

2.重要:它是一个用户能够很容易找到的操作,即使它不是经常性的操作,也需要用户在需要的时候能够轻易的找到它,并执行。

如,Wi-Fi设置中的添加网络等。

3.典型:它是一些类似应用程序的操作栏中提供的典型操作,因此,用户都期望在操作栏中能够找到它。

如,电子邮件或社交应用程序中的“刷新”操作。

如果你想要把四个以上的菜单项调整为操作项,那么你就应该认真考虑一下他们相对的重要性级别,并且尝试不要超过四个以上的操作项设置(并且还有使用“ifRoom”属性值的设置,允许系统在遇到空间受限的比较小的屏幕的时候,能够把靠后的操作项放到溢出菜单中)。即使在一些宽屏设备上,空间充足,你也不应该创建很多操作项,这样会扰乱UI的布局,而且更像一个桌面工具栏,因此要保持最小数量的操作项。

另外,以下操作应该永远不要作为操作项来显示:设置、帮助、意见反馈、或类似的操作。要把它们始终保留在溢出菜单中。

注意:不是所有的设备都给检索提供了专有的硬件按钮,因此,如果是你应用程序中的一个重要功能,它应该始终作为一个操作项来显示(而且通常要把放到第一项的位置,尤其是操作窗口中提供这个操作的时候)。

使用分离式操作栏

当你的应用程序正在Android4.0(API 级别 14)或以上的版本上运行,那么还有一种叫做“分隔操作栏”的额外模式对操作栏有效。当你启用分隔操作栏模式时,在屏幕的底部会显示一个独立的横条,用于显示Activity在窄屏设备(如竖屏手机)上运行时的所有操作项。

把操作栏分隔成独立的操作项,确保在窄屏设备上有合适的空间来显示所有的操作项,同时把导航条和标题元素留在顶部。

要启用分离式操作栏,只需简单的在<application>或<activity>元素中添加uiOptions=”splitActionBarWhenNarrow”属性设置就可以了。

要注意,Android会基于当前屏幕的尺寸用各种方式来调整操作栏的外观。使用分离式操作栏只是你能够启用的允许操作栏针对不同屏幕尺寸来进一步优化用户体验的选项之一。你还可以允许操作栏把导航选项标签折叠到主操作栏中,如果你在操作栏中使用导航选项标签,那么一旦操作项在窄屏设备上被分离,这些导航选项标签就可能填充到主操作栏中,而不是被分离到堆叠起来的操作栏。尤其是如果你禁用了操作栏的图标和标题(用setDisplayShowHomeEnabled(false)和setDisplayShowTitleEnabled(false)方法),那么导航选项标签就会折叠到主操作栏中,如下图3中第二个设备的显示:

pic

图3. 左侧是带有导航选项标签的分离式操作栏,右侧是禁用了应用图标和标题的分离式操作栏。

注意:尽管android:uiOptions属性在Android4.0(API 级别 14)中才被添加,但是为了保持跟Android的低版本的兼容性,即使你的minSdkVersion属性值小于14,那么你的应用程序也可以安全的包含android:uiOptions属性。在旧版本上运行时,因为系统不能理解这个属性,所以只是简单的忽略了这个XML属性。在你的清单文件中包含这个属性的唯一条件是,你必须在支持API级别14或更高以上版本的平台上编译你的应用程序。为了保持兼容性,你不能在你的应用程序代码中使用由minSdkVersion属性声明的版本所不支持的API,只有XML属性才能被旧的平台版本安全的忽略。

使用应用程序图标来导航

默认情况下,应用程序图标显示在操作栏的左边。你能够把这个图标当做操作项来使用。应用程序应该在这个图标上响应以下两个操作之一:

1.返回应用程序的“主”Activity;

2.向应用程序上级页面导航。

当用户触摸这个图标时,系统会调用Activity带有android.R.id.home ID的onOptionsItemSelected()方法。在这个响应中,你既可以启动主Activity,也可以返回你的应用程序结构化层次中用户上一步操作的界面。

如果你要通过应用程序图标的响应来返回主Activity,那么就应该在Itent对象中包括FLAG_ACTIVITY_CLEAR_TOP标识。用这个标记,如果你要启动的Activity在当前任务中已经存在,那么,堆栈中这个Activity之上的所有的Activity都有被销毁,并且把这个Activity显示给用户。添加这个标识往往是重要的,因为返回主Activity相当与一个回退的动作,因此通常不应该再创建一个新的主Activity的实例,否则,最终可能会在当前任务中产生一个很长的拥有多个主Activity的堆栈。

例如,下例的onOptionsItemSelected()方法实现了返回应用程序的主Activity的操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

在用户从另一个应用程序进入当前Activity的情况下,你可能还想要添加FLAG_ACTIVITY_NEW_TASK标识。这个标识确保在用户返回主页或上级页面时,新的Activity不会被添加到当前的任务中,而是在属于你自己的应用程序的任务中启动。例如,如果用户通过被另一个应用程序调用的Intent对象启动了你的应用程序中的一个Activity,那么选择操作栏图标来返回主页或上级页面时,FLAG_ACTIVITY_CLEAR_TOP标识会在属于你的应用程序的任务中启动这个Activity(不是当前任务)。系统既可以用这个新的Activity做根Activity来启动一个新的任务,也可以把存在后台的拥有这个Activity实例的一个既存任务带到前台来,并且目标Activity会接受onNewIntent()回调。因此,如果你的Activity要接收另一个应用程序的Intent对象,那么通常应该给这个Intent对象添加FLAG_ACTIVITY_NEW_TASK标识,如:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

注意:如果你要使用应用图标来返回主页,要注意从Android4.0(API 级别 14)开始,必须通过调用setHomeButtonEnabled(true)方法确保这个图标能够作为一个操作项(在以前的版本,默认情况下,这个图标就能够作为一个操作项)。

向应用程序上级页面导航

作为传统的回退导航(把用户带回任务历史中的前一个窗口)的补充,你能够让操作栏图标提供向上级页面导航的功能,它应用把用户带回到你的应用程序的上级页面。例如,当前页面时你的应用程序层次比较深的一个页面,触摸应用程序图标应该返回返回上一级页面(当前页面的父页面)。

pic

图4. Email应用程序的标准图标(左)和向上导航图标(右)。系统会自动添加向上指示。

例如,图5演示了当用户从一个应用程序导航到一个属于不同应用程序的Activity时,“回退”按钮的行为。

pic

图5. 在从People(或Contacts)应用程序进入Email应用程序之后,回退按钮的行为。

但是,如果在编辑完邮件之后,想要停留在Email应用程序中,那么向上导航就允许你把用户导航到Email应用程序中编辑邮件页面的上级页面,而不是返回到前一个Activity。图6演示了这种场景,在这个场景中,用户进入到Email应用程序后,不是按回退按钮,而是按操作栏图标来向上导航。

pic

图6. 从People应用进入Email应用后,向上导航的行为。

要是应用程序图标能够向上导航,就要在你的ActionBar中调用SetDisplayHomeAsUpEnabledtrue(true)方法。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    ...
}

当用户触摸这个图标时,系统会调用带有android.R.id.home ID的onOptionsItemSelected()方法。

请记住要在Intent对象中使用FLAG_ACTIVITY_CLEAR_TOP标识,以便你不会这个父Activity存在的情况下,再创建一个新的实例。例如,如果你不使用FLAG_ACTIVITY_CLEAR_TOP标识,那么向上导航后,再按回退按钮,实际上会把用户带到应用程序的下级页面,这是很奇怪的。

注意:如果有很多用户能够到达应用程序中当前Activity的路径,那么,向上图标应该沿着当前Activity的实际启动路径逐步的向会导航。

分享到:
评论

相关推荐

    android-support-v4 android-support-v7-appcompat

    Action Bar是Android应用中一种重要的UI元素,它提供了一种统一的导航和操作方式。`appcompat-v7`库通过引入一个自定义的ActionBar实现,使得开发者可以为旧版本的Android设备添加Action Bar功能。此外,它还包含了...

    android-support-v4+android-support-v7-appcompat组合包

    集成这两个库后,开发者就可以在Unity中使用Android的高级特性,比如使用Fragment来构建复杂的用户界面,或者利用AppCompat库提供的Material Design风格。然而,需要注意的是,由于Unity的特性,可能需要使用Java...

    android-support-v7和android-support-v7-recyclerview的classes.jar

    它提供了一个自定义的`Activity`类——`AppCompatActivity`,该类实现了对Material Design风格的支持,包括Action Bar、ToolBar以及主题颜色等,使得开发者可以在低版本Android设备上实现现代Android界面的风格。...

    android-support-v7-appcompat.zip

    在Android开发中,`android-support-v7-appcompat`库是一个至关重要的组件,它极大地扩展了Android API的功能,使得开发者能够在更广泛的设备上实现一致的用户界面和功能。这个库是Android Support Library系列的一...

    android支持包:android-support-v4

    `android-support-v4`库提供了对Fragment的兼容,使得开发者可以在更低版本的Android设备上使用Fragment来构建更加复杂的用户界面。Fragment可以单独添加、移除或替换到Activity中,从而实现动态的布局管理和更灵活...

    android_action-bar

    Action Bar是Android 3.0(API级别11)引入的,用于提供一个统一的用户界面元素,它包含了应用的Logo、标题、菜单项以及可扩展的操作。Action Bar的设计旨在提高应用的可发现性和可用性,让用户更容易地与应用进行...

    Action bar 操作栏

    在Android应用开发中,Action Bar(操作栏)是界面设计中的一个重要组成部分,它为用户提供了一种统一且高效的交互方式。这个部分将详细讲解Action Bar的基本概念、功能、设计原则以及如何在代码中实现。 一、...

    android-support-v4.jar,android-support-v7-appcompat.jar

    这个库中最显著的特性就是实现了ActionBar,使得开发者能够在旧版本的Android上使用类似于新版本中的Action Bar,提供统一的导航和操作界面。除此之外,它还支持Toolbar,这是一个可定制的视图,可以作为Activity的...

    blog.rar_android_android-support-v4_blog

    3. **AppCompatActivity**:基于`android.support.v7.app.AppCompatActivity`,提供了对ActionBar的支持,使得在API 14以下的版本也能使用Action Bar,提供统一的UI体验。 4. **PagerAdapter**:用于创建滑动界面,...

    Android-ObservableScrollView-master

    "Android-ObservableScrollView-master"是一个非常实用的开源库,它专注于解决一个常见的设计问题:如何优雅地处理ScrollView或NestedScrollView的滚动事件,并与诸如Toolbar(也称为Action Bar)这样的组件进行交互...

    android-actionbar-for-2.x.x.7z

    Action Bar是Android系统中的一种UI组件,主要用在应用程序的顶部,用于展示应用的标识、提供导航以及常用操作。在Android 3.0(API级别11)及更高版本中,Action Bar是默认界面的一部分,但在早期版本如2.x(API...

    自定义Android Action Bar的布局

    Action Bar是Android 3.0(API级别11)引入的一个特性,目的是为了提供一种更统一的用户界面设计。在Android 4.0(API级别14)及以后的版本中,它已经成为系统默认样式的一部分。即使在更早的版本,通过使用兼容库...

    android-actionbar-master.zip_android_android actionbar组件

    Action Bar为用户提供了一种统一的界面风格,使其与Android系统的其他应用保持一致,同时也提高了用户体验。本资源“android-actionbar-master.zip”提供了一个通用的Android ActionBar实现,旨在帮助开发者更高效地...

    android-support-v7.jar

    4. **菜单和选项菜单**:这个库还处理了菜单和选项菜单的适配问题,使得在低版本Android上也能使用Action Bar中的菜单项。 5. **自定义视图**:对于自定义视图,android-support-v7-appcompat库提供了一些抽象类,...

    android-support-v4+v7

    此外,`appcompat-v7`还包含了对ToolBar、FloatingActionButton、Snackbar等Material Design组件的兼容,使得开发者能为老版本的Android设备提供现代感的用户界面。 除了`appcompat-v7`,`android-support-v7`库还...

    android-support-v7-appcompat【2分】

    1. **ActionBar**: 提供了一种在早期Android版本上实现类似Action Bar的界面元素,它包含了下拉菜单、搜索框和操作按钮等功能,显著提升了应用的导航体验。 2. **主题兼容性**: 允许开发者在低版本Android上使用...

    Android SDK 2.2-4.4

    - **行动栏(Action Bar)**:提供统一的导航和操作方式,简化了用户界面。 - **多窗口任务切换**:支持多窗口任务切换,提高了生产力。 - **碎片(Fragments)**:允许在单个活动中展示多个视图,适应不同屏幕尺寸...

    Android-Glass-Action-Bar-Sample

    标题“Android-Glass-Action-Bar-Sample”表明这是一个关于Android应用开发的项目示例,主要关注的是在Android设备上实现类似Google Glass的Action Bar设计。Action Bar是Android系统中的一个关键组件,它提供了应用...

    android-support-v4-v7

    2. `Toolbar`:作为可定制的Action Bar,提供了高度自定义的导航栏功能。 3. `RecyclerView`:高效的列表视图,可以处理大量的数据项,并支持滚动优化和动画效果。 4. `CardView`和`Material Design Components`:...

Global site tag (gtag.js) - Google Analytics