导航抽屉(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)的主要内容,如果未能解决你的问题,请参考以下文章