根据需求的不同,应用程序有着各种各样的结构。例如:
- 计算器以及相机类的应用,都是围绕着一个主要的控制单屏幕的Activity来建立的。
- 电话类的应用,这种应用的主要目的是在不同的Activity间切换而没有更深层次的导航。
- Gmail或者Play Store类的应用,这种结合一系列的数据视图并且有更深层次导航的。
你应用的结构很大程度上取决于你想给你的用户提供的内容和任务。
A 一般的结构
一个典型的android应用是由顶层页以及详情或者编辑页组成的。如果导航层级是多层并且复杂的,分类页用来将顶层页和详情页连接在一起。
A.a 顶层视图
顶层视图通常是由你的应用提供哪些功能的views构成的,这些views有时提供一种数据的不同表现形式或者提供你应用中完全不同的两个功能。
A.b 分类视图
分类视图允许你更深入的进入到你的数据中。
A.c 详细/编辑视图
详细/编辑视图中,您使用或创建数据。
B 顶层
问问你自己:“我的用户在我的应用中最想去做什么?”,相应的来构成你应用的第一屏布局。
B.a 把内容放在前面
许多应用都提供内容的展示。避免第一个界面上只有导航并且通过把内容展示在第一个界面的中心位置来避免用户立刻得到你应用的详情部分。选择那些外包美观并且适用于数据结构和屏幕尺寸的布局。
The Play Store app's start screen primarily allows navigation into the stores for Apps, Music, Books, Movies, and Games.
Play Store 应用第一屏首先允许用户导航进入应用、音乐、图书、电影和游戏的store。他同样通过定做的推荐和促销的基本内容来吸引用户的方法是第一屏丰富。搜索也在ActionBar上面可以直接使用。
B.b 让你的应用有自己的特性
让你的应用有自己的特性不仅体现在ActionBar上,你应用的特性与你的数据交流,表现数据的方式是安排好的,用户怎么操作他也是安排好的。尤其对那些富媒体应用,试着去创造出独一无二的显示数据的方式而不是千篇一律的listview。
3D旋转木马艺术封面设计建立了google music应用独一无二的特点。默认到最近的views保存了用户最近听的音乐。
B.c 为你的导航和操作添加动作条
应用的每个界面都应该通过动作条来提供始终如一的导航以及执行一些重要操作的功能。
在顶层界面,使用动作条要特别注意的一些:
- 使用actionbar来显示你应用的图标或者标题。
- 如果你的顶层页由多个views组成,通过在actionbar中添加控制条的方法确保你的用户可以很容易在他们之间切换。
- 如果你的应用允许用户创建内容,建议让用户在顶层就可以访问这些内容。
- 如果你的内容是可搜索的,在actionbar中包含搜索动作,这样可以减少用户使用导航层。
邮件关乎到生产力,所以一个高效的、方便浏览的拥有高密度数据的列表可以很好的完成这一点。导航支持在不同的账户或者最近使用的标签间切换。创建新邮件以及搜索等功能的图标显著的摆放在下方分离的actionbar中。
C 使用视图控制器来切换顶层视图
顶层视图通过把你应用的主要功能介绍给用户来完成体现你应用能力的工作。在很多种情况下,顶层视图是由多个views组成的,所以你必须确保用户可以在他们之间高效的切换,android提供了几种不同的视图控制器来完成这个工作。你可以选择最适合你应用使用的那个控制器来使用:
C.a 固定的标签
固定标签同时显示顶层的views并且让他容易被打开并且可以相互之间切换。固定的标签总是出现在屏幕上,并且不能像可滚动的标签那也滚动。固定标签同时也都会允许用户在内容区域左滑或者右滑来切换导航。
Holo Dark & Light两张style下的默认固定标签。
在这些情况下使用固定标签:
- 你希望你的用户在应用中频繁的切换页面。
- 你的应用拥有数量有限的顶级views。
- 你想让你的用户对于视图的改变有深刻隐形。
- 你不想因为一个专用的ActionBar而放弃原有的竖屏结构。
- 用户在拥有相同数据结构的不同view间切换(例如:calendar当中查看天、周、月的view)或者有相同数据类型的不同view(例如不同账户对应的不用内容)。
calendar应用当中下拉列表的使用。
C.c 导航抽屉
一个导航抽屉就是一个可滑出的菜单,允许用户通过它来切换到你应用中不同的view。他可以包含大量的选项并且在你应用的任何地方都是可以进入的。导航抽屉提供你应用当中的顶层视图,但是也可以把导航到深层视图的项放到里面。这一点可以让他使用更复杂的应用。
在这些情况下使用导航抽屉:
- 你不想因为一个专用的ActionBar而放弃原有的竖屏结构。
- 拥有大量的顶层views。
- 你想提供直接访问深层视图的功能。
- 你想提供快速导航到一个和其他视图没有直接关系的视图的功能。
- 你应该的导航分层结构很深层。
shopper app 中使用的导航抽屉。
C.d 不要混合和匹配样式
在确定下最适合你应用的顶层结构后,不要混合和匹配样式。例如:如果你确定要在顶层菜单使用固定标签样式,那么就不要在添加一个抽屉,即使你的应用的导航分层结构是很深层的。在这种情况下,导航抽屉只是会简单的复制你固定标签上的内容,迷惑你的用户。
D 分类视图
一般来说,一个深层次、数据驱动类型的应用的目的是通过组织分类导航到详情页,在详情页可以查看或者管理数据。避免导航过多的影响你的应用,应该尽量让你的应用是浅层导航的。
尽管垂直导航的数量,包括从顶层到详细视图的结构通常取决于您的应用程序的内容。还是有几种方法可以避免导航过于繁琐发。
D.a 使用标签来组合分类选择器和数据显示
如果分类是常见的类型或者分类的数量不多这点是很好的选择。他的一个优点就是即使一个导航层级已经被移除了以后,内容依然可以在用户看见的核心部分显示。包含丰富数据的横向导航和明确的导航步骤比起来更像随意浏览。
如果分类是常见的、可以提前知道的、或者有关系的,使用可滚动的标签(并不是所有的分类都同时在屏幕中看到)。控制可滚动的标签当中的标签数量,在一个可管理的范围内,以降低导航的影响。经验推荐:不要超过5到7个。
Play Store 应用使用标签来显示分类同时显示选择的内容,用户可以通过在内容区域左滑或者右滑来浏览不同的分类。
如果标签里的分类之间没有什么关系,最好使用固定标签,以确保所有的分类都在屏幕中显示。
youtube使用固定标签在不同的、不相关的功能区之间切换。
http://developer.android.com/design/building-blocks/tabs.html
D.b 允许在分层当中切断
使用快捷键可以帮助人们更快的到达想去的地方,为了给列表中或者网格中的项提供顶层一些操作的调用,可以在列表中直接显示明显的下拉列表项或者可分裂列表项。这可以允许用户在数据页就调用操作而不是总是使用一样的层次结构。
music允许用户在一个数据项(歌)上面执行操作在分类视图(专辑),这样就移除了总是要去到歌曲详情页的导航需求。
D.c 操作多个数据项
尽管类别视图主要用于指导人们详细内容,但是记住,也经常有一些操作数据集合的需要。
例如,你如果运行用户在详情页删除一个项,那么你应该也运行用户在分类页删除多个项。分析那些详细的操作同样适用于操作数据项集合。然后使用多选操作来让你的应用在分类页对数据集合项执行这些操作。
http://developer.android.com/design/patterns/selection.html
E 详情视图
详情页允许你查看或者操作你的数据。详情页的布局取决于要显示的数据类型,因此不同的应用会拥有不同的详情页。
E.a 布局
考虑用户会在详情页执行哪些操作并且安排相应的布局。
联系人这个应用的详情页的目的是显示联络的操作。这个列表视图允许高效的浏览以及快速使用电话号码、电子邮箱以及其他信息项。分裂的项用于把打电话和发短信组号成一个紧凑的列表项。
E.b 熄灯模式
身临其境的内容体验,比如媒体和游戏的全屏体验,没有其他东西分心是最棒的。但是这不意味着你不需要为内容提供分享、评论或者搜索功能。如果用户在一段时间内没有执行任何的操作,自动让动作栏和其他的系统界面消失,以便用户可以放松的享受正在查看的内容。我们把这种就做熄灯模式。之后,用户如果想要执行什么操作,用户可以通过触碰屏幕的任何区域来推出熄灯模式,从而回到可操作的状态。
谷歌图书的详细页视图通过熄灯模式和翻页动画复制了身临其境的体验阅读,就像在读一本镇长的书。
E.c 让详细页之间的导航是高效的
你的用户可能回想看一个序列当中的多个项,让他们可以从详情页内部就可以切换他们。使用滑动视图或者其他技术,或者缩略图控件,来实现这个功能。
Gmail使用滑动视图可以在详情页与详情页之间切换。
除了支持滑动手势向左或向右切换页面,杂志这个应用提供一个缩略图控制器让用户跳到特定的页面。
http://developer.android.com/design/patterns/swipe-views.html