所谓导航,主要是向上键与后退键
. 为用户提供一种普遍的,通用的导航方式是一个操作系统的必修课。如果你用过iphone,你会发现它的"Home"键是多么霸气,神马情况下都能返回到桌面,三岁小孩跟80岁老人家都会用!而安卓4.0以上系统提供两个通用的导航按键给你,一个是”向上“,一个是”返回“。ht2b淮安掼蛋网
安卓2.3或更早的版本只提供”返回“这种导航,因为它没有动作栏(Action Bar),”向上“键是设计在动作栏内的。当然2.3.之前的版本可以通过复杂的编程来解决这个问题,但问题复杂化了会影响性能,还不如将它简单化。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_with_back_and_up.png&size=0)
两大高手对决:向上 对 后退
”向上“的能力就是让界面回到上一层。一个程序通常有高层,中间层,底层三个层次。当你处于底层,向上键会带你回去中间层。如果你在中间层,向上键会带你回去顶层。就是这么简单。
如果你处于顶层,用户不会看到向上键。
”后退“的能力就是让你从哪里来回到哪里去。你用过浏览器浏览网页吗?它的功能就像那个”后退“键。
与向上键不同的是,后退键可以从一个程序后退到另一个程序,或者返回到主界面。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_up_vs_back_gmail.png&size=0)
返回键还有一些特殊的功能,例如:
- 取消一个浮动的窗口(如对话框,弹出菜单等)。
- 取消动作栏上的上下文提示、取消已经选择的项目。
- 隐藏输入法面板。
总的来说,是返回键的功力深厚,但你永远需要向上键来让自己保持头脑清晰。
让你在程序里面实现清晰的导航
*认清楚接入点
有时候,程序的某个视图并不严格地属于顶层、中间层或者底层的一种,像设置视图,因为它可以由任何一个视图的动作栏中进入。在这种情况下,我们认为这个设置视图是多接入点的,它会有向上键,它的功能就像后退键一样,回到之前的接入点视图中。
*某些视图自身的改变不会写进导航的历史
这些例子中,视图改变了,但当你按返回键的时候,不会退回原来的状态,而是后退到另一个页面:
- 点击标签,或者左右滑动查看标签的不同页面。
- 展开折叠式的列表
- 通过动作栏筛选、过滤出一些项目
- 对一个列表排序
- 对屏幕进行放大、缩小等等的参数性操作。
*底层项目之间的导航
当你处于程序的底层(详细信息)视图中,进行左右滑动的操作能够浏览上一个或者下一个项目,这个时候,后退键会带你返回之前的页面,而向上键则会带你返回它所属于的中间层(目录列表),例如,歌曲会回到歌曲列表,电影会回到电影列表。
请看以下的三个示例:下图的灰色箭头显示用户触摸屏幕后的反应,红色箭头显示的用户按了后退键的反应,而黄色箭头显示的是用户触摸向上键的反应。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_siblings_gmail.png&size=0)
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_siblings_market1.png&size=0)
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_siblings_market2.png&size=0)
从主屏的小组件和通知进入程序的导航
安卓有主屏小组件,也有通知。当我们触摸这些组件的相应区域时,会进入到程序里的某一个底层视图,而不一定要经过程序的高层,到中间层,才到达底层。现在讨论的是,我从小组件和通知进入了程序后,触摸向上键与后退键会有什么反应?
先讨论向上键:
- 如果大多数用户都认为程序的底层某一个视图是隶属于某个中间层的,那么向上键就要设计成导航至那个被公认的中间层。
- 否则,请将向上导航键设计成返回程序的首页。
再讨论后退键:
即使你通过小组件进入了底层,为了让后退键符合用户的使用习惯,我们建议你将后退键统一设计成先返回到程序的主界面,然后再退 回到主屏幕。
如图:灰色箭头表示用户从小组件进入到编辑界面(底层),黄色箭头表示用户用向上键回到主界面,红色箭头表表用户先从底层回到主界面,再退出程序回到主屏幕。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_from_outside_back.png&size=0)
间接通知(Indirect notifications )的导航
间接通知是一个显示多个通知的屏幕(下图的第三个小图),它同时显示几个通知。这个时候如果用户点击后退键,将会返回到原来的视图。
一旦用户从间接通知进入了某个程序,向上键与后退键都会为程序服务,先回到程序的主界面,再退回到原来的视图。
举例说明,一个用户打开了Gmail的界面(下图左一),这个时候他下拉菜单并点击了一个通知(下图左二),进入了间接通知的界面(下图左三)。这个时候如果他按后退键,将会退回到Gmail的界面。但是如果他点击了其中一个通知并进入了“日历”,那么后退键与返回键都会先退回到日历的主界面,再按后退才回到Gmail的界面。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_indirect_notification.png&size=0)
弹出通知的导航
弹出通知不会出现在下拉菜单中,而直接出现在主屏幕的最上方。它是有时限的,而且需要用户响应。如果用户不理睬,它会在几秒后消失。如图所示,用户正在使用Gmail,这时出现了弹出通知。如果用户不想处理,可以按后退键令它消失。如果用户点击了弹出通知进入了Google Talk程序,后退键与返回键都会先回到Google Talk的主界面。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_popup_notification.png&size=0)
程序之间的导航
安卓系统的其中一个重要功能是允许一个程序启动另一个程序!例如,一个程序需要拍照,它自动会启动相机程序,照相完成后会自动将图片信息传递给原来的程序,这些都是自动运行,无需用户频繁切换。
要理解两个程序之间的导航,我们首先要了解安卓系统的行为框架:
活动(Activities),任务( tasks), 意愿(intents)
在安卓系统中,活动(Activity)是组合界面信息与用户操作的系统组件。一个程序是一系列的活动(Activity)的集合,是由属于程序本身创建的活动(Activity)或其它程序中可供使用的活动(Activity)所组成的。例如一个邮件程序,除了有属于自己的Activity,还有实现照相功能等其它程序的Activity。
任务(Task)是由一系列的完成特定目标的Activities组成的。一个简单的任务可以由一个程序的Activites组成,也可以由不同程序的Activities所组成。不同程序之间通信就要有一个机制:意愿(intents).
意愿(intents)是一个信息传递的机制,当一个程序需要另一个程序协助去完成任务时,需要intents的帮助去启动另一个程序,并将需要协助的信息传递给另一个程序。例如“分享”功能,它能启动微博等程序,并将图片或者其它信息通过intents传递给微博这个程序,以便上传到网络去。
例:两个程序如何实现分享功能与导航功能。
为了理解activities,task与intents的运行机制,我们以“分享”这个功能为例讲解一次。如下图,用户启动了谷歌市场,这是任务A(Task A)。用户从程序的顶层进入了底层的详细信息,在这个过程中,顶层是一个Activity,底层也是一个Activity。当你在底层的Activity中按“分享”键,屏幕弹出一个Gmail的选项,当你选择这个选项时会启动Gmail的Activity。任务A使用了两个程序(Play Store与Gmail)的Activity。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_apps_inward.png&size=0)
如果Gmail正在执行其它任务,它会被系统暂停,换任务A上场。
在这个时候,如果用户按Send按钮,email就会被发送并返回Play Store的界面。如果用户不想发送并按后退键,系统也会返回到Play Store去。
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_apps_back.png&size=0)
还有一种情况,当用户按返回键时,Gmail程序就会启动任务B,去到Gmail的主界面!在Gmail主界面按后退键,就会返回到主屏幕。
如下图所示:
![](http://p.qpimg.cn/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fdeveloper.android.com%2Fdesign%2Fmedia%2Fnavigation_between_apps_up.png&size=0)
当任务B启动后,任务A会处于后台,用户可以稍后通过最近使用等方法回到任务A中去。在启动任务B时,如果Gmail是有任务执行的,会被任务B所代替。
以上的内容是给大家展示了一种用户已经形成习惯的导航方法,主要是展示了向上键与后退键会产生怎样的响应。事实上,可以通过编程来改变向上键与后退键的用法,但不建议这样做。我们要尊重用户的习惯,当你尊重用户,用户就会尊重你。如果你以将用户搞得头晕脑胀为乐趣,那么恭喜你,可以转行了。
版权声明:英文原版版权由android.com所有,本中文翻译版版权由姚志浩所有,欢迎转载。