导航抽屉(Google+ 与 YouTube)

Posted

技术标签:

【中文标题】导航抽屉(Google+ 与 YouTube)【英文标题】:Navigation Drawer (Google+ vs. YouTube) 【发布时间】:2012-07-07 19:31:55 【问题描述】:

有人知道如何像当今一些***应用程序那样实现滑动菜单吗?

其他 Stack Overflow questions 还没有关于如何执行此操作的任何答案,因此我正在尝试收集尽可能多的信息来帮助其他人。我在下面提到的所有应用程序都很好地实现了滑动菜单。

1。 Google Plus(截至 2012 年 7 月 7 日)

您只能通过单击左上角的 G+ 徽标从第一个屏幕转到第二个屏幕。请注意,整个屏幕从它的位置移动并被轻推到屏幕的右侧(包括操作栏)。要返回第一个屏幕,您可以将右侧滑回焦点,也可以再次单击 G+ 图标。

2。 YouTube(截至 2012 年 7 月 7 日)

您可以使用两种方法从第一个屏幕转到第二个屏幕。单击左上角的 YouTube 徽标,或者您可以使用滑动手势将其向右移动。这已经与 G+ 应用不同了。其次,您可以看到操作栏保持不变(与 G+ 不同)。最后,要恢复原来的屏幕,它就像 G+ 一样工作。

【问题讨论】:

从表面上看,没有多少人有过这样的工作经验。我建议您尝试自己实现一些东西,然后带着您可能遇到的特定问题来到 SO。 是的,这就是为什么我在其他地方发布了一个我认为值得更多关注的 SO 问题。我只是想知道是否有人成功地做到了这一点并愿意分享他们的智慧。 @EGHDK 查看本系列文章:android.cyrilmottier.com/?p=658 我刚才回答了这个问题,但我回来再次强调 Prixing 有最好的飞出菜单......到目前为止。它绝对漂亮,完美流畅,让 Facebook、Google+ 和 YouTube 感到羞耻。 EverNote 也很不错……但仍不如 Prixing 完美。查看 this series of posts 了解弹出菜单的实现方式(来自 Prixing 的首席开发人员本人!)。 使用 android 支持包修订版 13(2013 年 5 月),有 DrawerLayout 用于创建可以从窗口边缘拉入的 Navigation Drawer。而且,导航抽屉现在是一种设计模式。 developer.android.com/tools/extras/support-library.html 【参考方案1】:

编辑#3:

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

查看以下链接:

设计文档可以在 here 找到。 开发者文档可以在 here 找到。

编辑#2:

Roman Nurik(Google 的一名 Android 设计工程师)已确认建议的行为是在打开抽屉时不要移动操作栏(如 YouTube 应用)。看到这个Google+ post。


编辑#1:

我刚才回答了这个问题,但我再次强调 Prixing 拥有目前为止最好的弹出式菜单...。它绝对漂亮,完美流畅,让 Facebook、Google+ 和 YouTube 感到羞耻。 EverNote 也很不错……但仍不如 Prixing 完美。查看 this series of posts 了解弹出菜单的实现方式(来自 Prixing 的首席开发人员本人!)。


原答案:

Adam Powell 和 Richard Fulcher 在名为“Android 中的导航”的 Google I/O 演讲中通过 49:47 - 52:50 讨论了这个问题。

总结一下他们的回答,截至发帖之日,滑出式导航菜单不是正式成为 Android 应用程序设计标准的一部分。您可能已经发现,目前还没有对此功能的原生支持,但有人谈论将其添加到即将发布的支持包修订版中。

关于 YouTube 和 G+ 应用,它们的行为不同似乎很奇怪。我最好的猜测是,YouTube 应用修复操作栏位置的原因是,

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

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

    另外,请查看 Google Play 应用以获取另一个版本的“拉出式菜单”(当您位于最左侧页面时,向左滑动并拉出“半页”菜单)。

您说得对,这并不是非常一致的行为,但 Android 团队内部似乎还没有就如何实现这种行为达成 100% 的共识。如果将来更新应用程序以使两个应用程序中的导航相同,我不会感到惊讶(他们似乎非常热衷于在谈话中使所有 Google 制造的应用程序的导航保持一致)。

【讨论】:

Prixing、Evernote 和 Spotify 都有相当大的团队编写他们的应用程序我是 Prixing 的首席执行官,我想准确地说我们只有一个真正的 Android 开发者(但非常有才华,Cyril Mottier) 使用 android 支持包修订版 13(2013 年 5 月),有 DrawerLayout 用于创建可以从窗口边缘拉入的 Navigation Drawer。而且,导航抽屉现在是一种设计模式。 developer.android.com/tools/extras/support-library.html 虽然 NavigationDrawer 在 V4 中存在,但它需要在 V4 中尚未提供的 ActionBar,因此无法在 API 级别低于 11 的应用程序中使用它。 @NayAneshGupte,您始终可以使用 ActionBarSherlock 来使用 API 级别 11 以下的 ActionBar。 如果您希望关闭动画流畅,似乎没有办法引入人为延迟?【参考方案2】:

就在最近,我分叉了一个名为“RibbonMenu”的当前 Github 项目,并对其进行了编辑以满足我的需求:

https://github.com/jaredsburrows/RibbonMenu

目的是什么

易于访问:允许轻松访问滑入和滑出的菜单 易于实施:使用最少的代码更新同一屏幕 独立性:不需要 ActionBarSherlock 等支持库 自定义:轻松更改颜色和菜单

新功能

更改了滑动动画以匹配 Facebook 和 Google+ 应用 添加了标准的ActionBar(你可以选择使用ActionBarSherlock) 使用 menuitem 打开菜单 增加了在主 Activity 上更新 ListView 的功能 在菜单中添加了 2 个列表视图,类似于 Facebook 和 Google+ 应用 添加了 AutoCompleteTextView 和 Button 以显示实现示例 添加了允许用户在打开菜单时点击“后退按钮”以隐藏菜单的方法 与 Facebook 和 Google+ 应用不同,允许用户同时与背景(主 ListView)和菜单进行交互!

带有菜单的操作栏

选择了菜单和搜索的操作栏

【讨论】:

【参考方案3】:

我个人喜欢 Google Drive 官方应用中的navigationDrawer。它只是工作并且工作得很好。我同意导航抽屉不应该移动操作栏,因为它是打开和关闭导航抽屉的关键点。

如果您仍在尝试获得这种行为,我最近创建了一个名为 SherlockNavigationDrawer 的项目,正如您所期望的那样,它是使用 ActionBarSherlock 实现的 Navigation Drawer,适用于预 Honeycomb 设备。检查它:

SherlockNavigationDrawer github

【讨论】:

【参考方案4】:

NavigationDrawer 有一个很好的实现,它遵循 Google Material Design Guidelines(并且兼容到 API 10)——MaterialDrawer 库(link to GitHub)。截至 2017 年 5 月撰写本文时,它得到了积极支持。

在Maven Central repo 中可用。 Gradle 依赖设置:

compile 'com.mikepenz:materialdrawer:5.9.1'

Maven 依赖设置:

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

【讨论】:

@lmiuelvargasf 你如何想象将 GitHub 项目融入答案?!请分享您的想法。【参考方案5】:

我知道这是一个老问题,但最新的答案是使用Android Support Design library,这将使您的生活更轻松。

【讨论】:

以上是关于导航抽屉(Google+ 与 YouTube)的主要内容,如果未能解决你的问题,请参考以下文章

当用户按下后退按钮时隐藏导航抽屉

更改导航抽屉组标题文本的颜色

在启动时打开导航抽屉

Android 5.0 材料设计风格的 KitKat 导航抽屉

Android中的导航抽屉

导航抽屉中的谷歌地图 - 空指针异常,哪个是正确的片段?