Вопрос по android, navigation-drawer, android-layout, user-interface – Навигационный ящик (Google+ против YouTube)

393

Кто-нибудь знает, как реализовать скользящее меню, как некоторые из лучших приложений сегодня?

Другое переполнение стекавопросы У меня не было ответов о том, как это сделать, поэтому я пытаюсь собрать как можно больше информации, чтобы помочь другим. Все приложения, о которых я упоминаю ниже, отлично справляются с реализацией слайд-меню

1. Google Plus (as of 7/7/12)

Google+ slide out menu screenshot

Вы можете перейти только с первого экрана на второй, нажав логотип G + в верхнем левом углу. Заметьте, что весь экран перемещается из его положения и подталкивается к правой стороне экрана (включая панель действий). Чтобы вернуться к первому экрану, вы можете либо снова сфокусировать правую сторону, либо снова щелкнуть значок G +.

2. YouTube (as of 7/7/12)

YouTube slide out menu screenshot

Вы можете перейти от первого экрана ко второму экрану двумя способами. Либо нажмите на логотип YouTube в верхнем левом углу, либо вы можете использовать жест смахивания, чтобы переместить его вправо. Это уже отличается от приложения G +. Во-вторых, вы можете видеть, что панель действий остается на месте (в отличие от G +). Наконец, чтобы вернуть оригинальный экран, он работает так же, как G +.

Судя по всему, не многие люди имели опыт работы над чем-то вроде этого. Я предлагаю попробовать реализовать что-то самостоятельно и обратиться в SO с конкретными проблемами, с которыми вы можете столкнуться. David Titarenco
Я ответил на этот вопрос некоторое время назад, но я снова хочу подчеркнуть, чтоPrixing имеет лучшее всплывающее меню там ... безусловно. Это абсолютно красиво, идеально гладко, и это позорит Facebook, Google+ и YouTube. EverNote тоже довольно хорош ... но все же не так совершенен, как Prixing. Проверять, выписыватьсяthis series of posts о том, как было реализовано всплывающее меню (ни от кого, кроме главного разработчика в самом Prixing!). Alex Lockwood
С версией 13 пакета поддержки Android (май 2013 г.) есть DrawerLayout для создания Навигационного Ящика, который можно вытянуть из края окна. И навигационный ящик теперь является образцом дизайна.developer.android.com/tools/extras/support-library.html Wubao Li
@EGHDK Проверьте эту серию статей:android.cyrilmottier.com/?p=658 Alex Lockwood
Да, именно поэтому я опубликовал ТАК другой вопрос, который, я считаю, заслуживает немного большего внимания. Мне просто интересно, есть ли кто-нибудь, кто успешно достиг этого и хотел бы поделиться своей мудростью. EGHDK

Ваш Ответ

5   ответов
2

navigationDrawer в официальном приложении Google Drive. Это просто работает и прекрасно работает. Я согласен с тем, что навигационная панель не должна перемещать панель действий, поскольку она является ключевой точкой для открытия и закрытия навигационной панели.

Если вы все еще пытаетесь добиться такого поведения, я недавно создал проект под названиемSherlockNavigationDrawer и, как вы можете ожидать, это реализация Навигационного Ящика сActionBarSherlock и работает для предварительно сотовых устройств. Проверь это:

SherlockNavigationDrawer Github

2

что это старый вопрос, но самый актуальный ответ заключается в использованииБиблиотека поддержки Android это сделает вашу жизнь легкой.

15

onMenu». и отредактировал это, чтобы соответствовать моим потребностям:

https://github.com/jaredsburrows/RibbonMenu

What's the Purpose Ease of Access: Allow easy access to a menu that slides in and out Ease of Implementation: Update the same screen using minimal amount of code Independency: Does not require support libraries such as ActionBarSherlock Customization: Easy to change colors and menus What's New Changed the sliding animation to match Facebook and Google+ apps Added standard ActionBar (you can chose to use ActionBarSherlock) Used menuitem to open the Menu Added ability to update ListView on main Activity Added 2 ListViews to the Menu, similiar to Facebook and Google+ apps Added a AutoCompleteTextView and a Button as well to show examples of implemenation Added method to allow users to hit the 'back button' to hide the menu when it is open Allows users to interact with background(main ListView) and the menu at the same time unlike the Facebook and Google+ apps!

ActionBar с выходом из меню

ActionBar with Menu out

Панель действий с выключенным меню и поиском

ActionBar with Menu out and search selected

152
Edit #3:

enter image description here Проверьте следующие ссылки:

Design docs can be found here. Developer docs can be found here. Edit #2:

Роман Нурик (инженер-разработчик Android в Google) подтвердил, что рекомендуется не перемещать панель действий при открытии ящика (например, приложение YouTube). Видеть этоПост в Google+.

Edit #1:

Я ответил на этот вопрос некоторое время назад, но я снова хочу подчеркнуть, чтоPrixing has the best fly-out menu out there... by far, Это абсолютно красиво, идеально гладко, и это позорит Facebook, Google+ и YouTube. EverNote тоже довольно хорош ... но все же не так совершенен, как Prixing. Проверять, выписыватьсяthis series of posts о том, как было реализовано всплывающее меню (ни от кого, кроме главного разработчика в самом Prixing!).

Original Answer:

Адам Пауэлл и Ричард Фулчер говорят об этом в49:47 - 52:50 в докладе Google I / O под названием «Навигация в Android».

Подводя итог их ответу, по состоянию на дату этой публикации выскользнуло меню навигации.not официально является частью стандарта разработки приложений Android. Как вы, вероятно, обнаружили, в настоящее время нет встроенной поддержки этой функции, но говорилось о том, чтобы сделать это дополнением к предстоящей редакции пакета поддержки.

Что касается приложений YouTube и G +, кажется странным, что они ведут себя по-разному. Я думаю, что причина, по которой приложение YouTube фиксирует положение панели действий, заключается в том, что

One of the most important navigational options for users using the YouTube app is search, which is performed in the SearchView in the action bar. It would make sense to make the action bar static in this regard, since it would allow the user to always have the option to search for new videos.

The G+ app uses a ViewPager to display its content, so making the pull out menu specific to the layout content (i.e. everything under the action bar) wouldn't make much sense. Swiping is supposed to provide a means of navigating between pages, not a means of global navigation. This might be why they decided to do it differently in the G+ app than they did in the YouTube app.

On another note, check out the Google Play app for another version of the "pull out menu" (when you are at the left most page, swipe left and a pull out, "half-page" menu will appear).

Вы правы в том, что это не очень последовательное поведение, но, похоже, в команде Android нет 100% консенсуса относительно того, как это поведение должно быть реализовано. Я не удивлюсь, если в будущем приложения будут обновлены таким образом, чтобы навигация в обоих приложениях была идентична (они, похоже, очень стремились к тому, чтобы навигация была согласованной во всех приложениях, созданных Google в разговоре).

Prixing, Evernote, and Spotify all have pretty big teams writing their apps Я являюсь генеральным директором Prixing, и я хотел бы уточнить, что у нас есть только один настоящий разработчик Android (но очень талантливый, Сирил Моттьер)
хотя NavigationDrawer присутствует в V4, ему требуется ActionBar, который еще не представлен в V4, поэтому он не может использовать его в приложениях с уровнем API ниже 11.
С версией 13 пакета поддержки Android (май 2013 г.) есть DrawerLayout для создания Навигационного Ящика, который можно вытянуть из края окна. И навигационный ящик теперь является образцом дизайна.developer.android.com/tools/extras/support-library.html
Кажется, что нет способа обойти искусственную задержку, если вы хотите, чтобы анимация закрытия была плавной?
@NayAneshGupte вы всегда можете использовать ActionBarSherlock, чтобы использовать ActionBar ниже уровня API 11.
5

NavigationDrawer в соответствии с Руководством по дизайну материалов Google (и совместимым с API 10) - библиотека MaterialDrawer(ссылка на GitHub), На момент написания статьи, май 2017 года, она активно поддерживалась.

Это доступно вMaven Центральный репо. Gradle dependency setup:

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

@lmiguelvargasf, как ты представляешь себе, как вписать проект GitHub в ответ ?! Пожалуйста, поделитесь своими идеями.

Похожие вопросы