导航抽屉(谷歌+ vs. YouTube)

有人知道如何实现一个滑动菜单像一些顶级应用程序的今天?

其他Stack Overflow 问题还没有任何关于如何做到这一点的答案,所以我正试图收集尽可能多的信息来帮助其他人。下面我提到的所有应用程序都很好地实现了幻灯片菜单。

1. 谷歌Plus(截至12年7月7日)

谷歌+滑出菜单截图

您只能通过单击左上角的G+标志从第一个屏幕切换到第二个屏幕。注意,整个屏幕从它的位置移动到屏幕的右侧(包括操作栏)。要回到第一个屏幕,您可以将右侧滑回焦点,或者再次单击G+图标。

2. YouTube(截至12年7月7日)

YouTube滑出菜单截图

您可以使用两种方法从第一个屏幕切换到第二个屏幕。你可以点击左上角的YouTube logo,也可以用滑动手势把它移到右边。这已经不同于G+应用程序。其次,你可以看到操作栏保持不变(不像G+)。最后,为了恢复原来的屏幕,它就像G+一样工作。

117773 次浏览

编辑# 3:

导航抽屉模式在Android文档中有正式的描述!

enter image description here 查看以下链接:

  • 设计文档可以在here中找到。
  • 开发人员文档可以在here中找到。

编辑# 2:

罗曼·努里克(谷歌的Android设计工程师)已经证实,推荐的行为是在打开抽屉时不要移动操作栏(就像YouTube应用程序一样)。请看这个谷歌+帖子


编辑# 1:

我刚才回答了这个问题,但我回来再次强调Prixing有最好的飞行菜单…到目前为止。它非常漂亮,非常流畅,它让Facebook,谷歌+和YouTube相形见绌。EverNote也很不错…但仍不如Prixing完美。查看这一系列的帖子关于飞出菜单是如何实现的(不是别人正是Prixing的首席开发人员自己!)。


最初的回答:

Adam Powell和Richard Fulcher在名为“Android导航”的谷歌I/O演讲中讨论了49:47 - 52:50

总结他们的答案,在这篇文章发布的日期,滑出导航菜单是正式的Android应用程序设计标准的一部分。您可能已经发现,目前没有对该特性的原生支持,但是曾经有过将其添加到即将发布的支持包修订中的讨论。

至于YouTube和G+应用程序,它们的表现不同似乎很奇怪。我最好的猜测是,YouTube应用程序固定操作栏位置的原因是,

  1. 对于使用YouTube应用程序的用户来说,最重要的导航选项之一是搜索,它在操作栏中的SearchView中执行。在这方面,使动作栏静态是有意义的,因为它将允许用户总是有搜索新视频的选项。

  2. G+应用程序使用ViewPager来显示其内容,因此使拉出菜单特定于布局内容(即操作栏下的所有内容)将没有多大意义。滑动应该提供一种在页面之间导航的方法,而不是一种全局导航的方法。这可能就是为什么他们决定在G+应用程序中做的与在YouTube应用程序中做的不同。

    在另一个注意,检查谷歌播放应用程序的另一个版本的“拉出菜单”(当你在最左边的页面,向左滑动并拉出,“半页”菜单将出现)

你是对的,这并不是非常一致的行为,但似乎在Android团队中,对于这种行为应该如何实现还没有100%的共识。如果未来应用程序更新后,两个应用程序的导航完全相同,我也不会感到惊讶(他们似乎非常热衷于在所有谷歌制造的应用程序中保持导航一致)。

就在最近,我分叉了一个当前的Github项目,名为“ribbonmenu”;并根据我的需要进行了编辑:

https://github.com/jaredsburrows/RibbonMenu

目的是什么

  • 易于访问:可以方便地访问滑动的菜单
  • 易于实现:使用最少的代码更新相同的屏幕
  • 独立性:不需要ActionBarSherlock等支持库
  • 自定义:轻松更改颜色和菜单

有什么新鲜事

  • 改变滑动动画,以匹配Facebook和谷歌+应用程序
  • 增加了标准的动作栏(你可以选择使用ActionBarSherlock)
  • 使用菜单项打开菜单
  • 增加在主活动上更新ListView的能力
  • 在菜单中添加了2个列表视图,类似于Facebook和谷歌+应用程序
  • 添加了一个AutoCompleteTextView和一个按钮,以及显示实现的例子
  • 增加了允许用户点击“后退按钮”来隐藏菜单打开时的方法
  • 允许用户与背景(主ListView)和菜单同时进行交互,不像Facebook和谷歌+应用程序!

带菜单的动作栏

ActionBar with Menu out

动作栏的菜单和搜索选择

操作栏与菜单和搜索选择

就我个人而言,我喜欢谷歌驱动器官方应用程序中的navigationDrawer。它只是工作,工作得很好。我同意导航抽屉不应该移动操作条,因为这是打开和关闭导航抽屉的关键点。

如果你仍然试图得到这种行为,我最近创建了一个名为SherlockNavigationDrawer的项目,正如你所期望的是导航抽屉的实现与ActionBarSherlock和工作前蜂窝设备。检查:

SherlockNavigationDrawer github

NavigationDrawer有一个很好的实现,它遵循谷歌材料设计指南(并且兼容到API 10)——MaterialDrawer库(链接到GitHub)。截至2017年5月撰写本文时,它得到了积极的支持。

Maven中央回购中可用。 Gradle依赖设置:

compile 'com.mikepenz:materialdrawer:5.9.1'

Maven依赖项设置:

<dependency>
    <groupId>com.mikepenz</groupId>
    <artifactId>materialdrawer</artifactId>
    <version>5.9.1</version>
</dependency>

enter image description here enter image description here

我知道这是一个老问题,但最新的答案是使用Android支持设计库,这将使你的生活更容易。