热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Android的界面设计规范-7

导航一致的导航是一个整体的用户体验的必不可少的组成部分。与用户行为不一致和出乎用户意料的操作会让用户感到很反感。Android3.0的显着变化是全局导航行为。亲切地遵循返回与向上导航的设计规

导航

一致的导航是一个整体的用户体验的必不可少的组成部分。与用户行为不一致和出乎用户意料的操作会让用户感到很反感。 Android 3.0的显着变化是全局导航行为。亲切地遵循返回与向上导航的设计规范,这将使你的应用程序的导航变为可预测和可靠的。

Android 2.3和更早的版本在应用程序里面的导航是依赖于系统的硬“返回”按钮。在Android3.0中引入的动作条,第二种导航机制出现了---“向上”按钮,它是一个图标或向左的符号。

clip_image002

向上与返回

向上按钮用于应用程序中基于屏幕层次之间的导航关系。举例来说,如屏幕是显示项目清单,选择一个项目需要显示屏幕B(更详细介绍了该项目),然后屏幕B应该提供一个按钮来返回到屏幕A.

如果屏幕是一个应用程序最顶层(即应用程序主页),就不应该出现一个向上按钮。

系统的“后退”导航按钮,是按用户最近访问过的历史屏幕的时间先后顺序编排的。它一般是根据屏幕上的时间之间的关系,而不是应用程序的层次结构来返回的。

以前查看过的屏幕也是当前屏幕的父层次,按返回按钮与向上按钮有相同的结果。然而, “向上”按钮可以确保用户仍然在你的应用程序中,不同的是,“返回”按钮可以使用户返回到主屏幕,甚至是一个不同的应用程序。

clip_image004

“返回”按钮还支持一些并无直接关系到屏幕到屏幕的导航行为:

l 消除浮动窗口(对话框,弹出窗口)

l 消除上下文操作栏,移除选定项目的高亮

l 隐藏屏幕上的键盘(IME)

应用程序中使用导航

多个入口点导航到屏幕的

有时一个屏幕在应用程序结构中没有一个严格的位置,并且能从多个入口点到这个屏幕,如设置屏幕,在您的应用程序中需要从任何其它屏幕可以达到设置屏幕。在这种情况下,应该选择“向上”按钮返回到引用它的屏幕,这等同于“返回”按钮。

更改屏幕视图

更改屏幕视图的选择不会改变“向上”与“返回”行为:屏幕仍然在应用程序的层次结构的相同位置,并没有创建新的导航历史。

例如下面一些视图的改变:

l 使用标签或左、右拨动切换视图

l 使用下拉切换视图(又名倒塌标签)

l 筛选列表

l 排序列表

l 更改显示特性(如缩放)

兄弟屏幕之间导航

当您的应用程序支持选择列表的项目之一到这些项目的详细视图的导航,它往往需要支持 到从列表的其中一个项中去到列表顺序中的另一个项。例如,在Gmail中,在同一个收件箱中通过向左或向右滑动很容易实现从一个会话到一个新的或旧的视图。正如更改屏幕视图时,这种导航没有改变的“向上”和“返回”的行为。

clip_image006

但是也有值得注意的例外发生,浏览相关细节的视图没有和指定的列表绑在一起,例如,当浏览应用市场里同一开发商的应用程序,或相同的艺术家的专辑。在这种情况下,每一个链接都创造了历史,导致“返回”按钮贯穿用户每个先前查看过的屏幕。应该使用“向上”按钮绕过这些相关的屏幕和导航,直接到最近浏览过视图的上一级容器屏幕。

clip_image007

你完全有能力基于你对详情视图的了解,使去到上一级的操作行为更聪明便捷。从上面的例子扩展应用商店,想象用户最后是从一本书的详细视图导航去观看同名书改编的电影。在这种情况下,“向上”按钮可以不通过先前用户的浏览返回到容器屏幕(电影)。

clip_image009

应用程序通过主屏幕小部件和通知导航

可以使用主屏幕上的小部件或通知帮助用户直接导航到你的应用程序层次结构的屏幕深处。例如,Gmail的收件箱小工具和新邮件通知都可以跳过收件箱屏幕,直接到一个会话视图。

按下面两种情况处理“向上”按钮:

l 当直接通过一些有目的的操作,从另一个应用程序导航到你的应用程序的层级结构中时,“向上”按钮应该导航到该屏幕。

l 否则,导航到应用程序在最上面(“HOME”)屏幕。

在“返回”按钮的情况下,应该确保导航更可预测的,这得通过插入任务的返回堆栈,堆栈包含完整的向上导航到到应用程序最顶层屏幕的路径。这使用户忘记了在退出之前是如何进入应用程序并导航到应用程序的最上面的屏幕。

作为一个例子,Gmail的主屏幕上的小部件有一个按钮,可以直接定位到撰写新邮件的屏幕。在撰写新邮件屏幕“返回”要到用户的收件箱,并从那里继续“返回”到首页。

clip_image011

间接的通知

当您的应用程序需要同时提交多个事件的信息,它可以使用一个单一的通知,将用户定向到一个间质屏幕。此屏幕总结了这些活动,并深入到应用程序为用户提供了路径。这种风格通知被称为间接的通知。

与标准的(直接)通知,按返回间接通知的间质屏幕,用户返回到触发点的通知,没有额外的屏幕插入后退堆栈。一旦用户进入应用程序从它的质屏幕上,向上和向后的行为为标准的通知,如上所述:导航应用程序,而不是返回到间质内。

例如,假设一个用户在Gmail中收到从日历来的间接通知。触摸该通知打开了间质的屏幕(日历),那里显示多个不同的事件提醒。从间质屏幕触摸“返回”返回到用户的Gmail。用从间质页面触摸一个事件提醒可以得到提醒事件的详细信息,为了显示提醒事件的详细信息会进入日历的应用程序。从事件的详细信息,“向上”和“返回”导航是到日历的顶级视图。

clip_image013

弹出式通知

弹出式提示通知绕过通知的发起者,而不是直接出现在用户面前。它们是很少使用,而且应该保留给必需使用的场合,这种场合是必须及时的响应并中断用户上下文。例如,用户聊天中提醒有朋友邀请视频聊天的提醒是使用这种风格,此邀请后几秒钟后自动失效。

从导航行为来看,弹出式通知紧跟直接一个直接通知的间质屏幕的行为。“返回”按钮会销毁弹出通知。如果用户浏览到通知的并进入到相应的应用程序,在应用程序内部,“向上”和“返回”按钮遵循标准的通知规则。

clip_image014

应用程序之间导航

Android系统的一个基本优势是能够用应用程序来激活另一个应用程序,让用户能够直接从一个应用程序导航到另一个。例如,在需要拍照时可以启动一个相机应用程序,“返回”会返回引用它的照片应用程序。这对开发人员是一个巨大的收益,开发人员可以很容易地利用从其他应用程序的代码,用户也会享受同一应用的一致性体验。

要理解应用程序到应用程序的导航,重要的是要了解Android框架,下面讨论一些框架行为。

活动、任务和意图

在Android中,活动是一个应用程序组件,它定义了屏幕上的信息和所有和用户关联的可以执行的动作。你的应用程序是活动的集合,这包括你新创建的活动和从其他应用程序中重新使用的活动。

任务是完成一个目标所需要的用户活动序列。一个单独的任务能保证一个应用程序活动,或者可以从一定数量的应用程序规划出活动。

意图是一个机制,这个机制是一个应用程序发出信号后想另一个应用程序协助完成一个动作。一个应用程序的活动可以表明他们作出回应的意图。对于常见的意图,如“共享”,用户可以安装许多应用程序,可以实现“共享”这一要求。

例如:在应用程序之间支持共享的导航

要了解活动、任务和意图如何一起工作,考虑应用程序如何允许用户使用其他应用程序共享内容。例如,商店应用程序从首页开始新的任务A(见下图)。浏览播放存储和触摸促销书来看它的细节后,用户仍然在相同的任务,通过加入活动来扩展这个任务。触发“共享”动作弹出提示一个对话框,列出从不同的应用来的每项活动,这些活动是可以处理已登录用户的共享意图。

clip_image016

当用户选择通过Gmail “共享”,Gmail的撰写活动被增加到任务A,作为任务A的延续而没有新的任务被创建。如果Gmail在后台运行有它自己的任务,那个这个后台任务会受到影响。

从撰写活动发送消息或触摸“返回”按钮,返回介绍书详细内容的活动。继续的返回将导航到商店,一直会到达首页。

clip_image018

然而,通过触摸撰写活动的“向上”,用户的意图还是想在Gmail里。 Gmail的会话列表活动出现,并为它创建一个新的任务B。新的任务总是起源于首页,所以从会话列表按“返回”会回到首页。

clip_image020

任务A依然存在与后台,用户可以稍后再返回(例如,通过最近的屏幕)。如果Gmail已经有自己在后台运行的任务,它会被替换成任务B-前一个上下文是被遗弃。

多窗格布局

为Android写一个应用程序时,请记住,Android设备在许多不同的屏幕尺寸和类型。请确保您的应用程序始终如一地提供一个均衡和美观的布局,这就需要根据不同尺寸和屏幕方向调整其内容。

要实现这一点,Panels(面板)是一个最好的方式。面板允许将多个视图合成一个复合视图,当水平方向有没有可利用的空间时,切分内容,分到不同的视图。

作者:Bruce Lee
出处: http://www.cnblogs.com/BruceLee521
本博原创文章版权归博客园和本人共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出作者名称和原文连接,否则保留追究法律责任的权利。
推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
author-avatar
我在等白色的雪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有