Szuflada nawigacji (Google+ vs. YouTube)

403

Czy ktoś wie, jak zaimplementować przesuwane menu, takie jak niektóre z najlepszych współczesnych aplikacji?

Inne pytania dotyczące przepełnienia stosu nie miały żadnych odpowiedzi, jak to zrobić, więc staram się zebrać jak najwięcej informacji, aby pomóc innym. Wszystkie aplikacje, o których wspomniałem poniżej, świetnie wykonują menu slajdów.

1. Google Plus (od 07.07.12)

Google+ wysuń zrzut ekranu menu

Z pierwszego ekranu można przejść tylko na drugi ekran, klikając logo G + w lewym górnym rogu. Zauważ, że cały ekran przesuwa się z pozycji i zostaje przesunięty w prawą stronę ekranu (w tym pasek akcji). Aby powrócić do pierwszego ekranu, możesz przesunąć prawą stronę z powrotem, aby ustawić ostrość, lub ponownie kliknąć ikonę G +.

2. YouTube (od 07.07.12)

Zrzut ekranu z wysuwanym menu YouTube

Możesz przejść od pierwszego ekranu do drugiego ekranu przy użyciu dwóch metod. Kliknij logo YouTube w lewym górnym rogu lub możesz użyć gestu przeciągnięcia, aby przesunąć je w prawo. To już różni się od aplikacji G +. Po drugie, możesz zobaczyć, że pasek akcji pozostaje ustawiony (w przeciwieństwie do G +). Wreszcie, aby przywrócić oryginalny ekran, działa on podobnie jak G +.

EGHDK
źródło
1
Wygląda na to, że niewiele osób ma doświadczenie w pracy nad czymś takim. Sugeruję próbę wdrożenia czegoś samemu i przejście do SO z konkretnymi problemami, które możesz napotkać.
David Titarenco,
7
Tak, dlatego opublikowałem pytanie SO w innym, które moim zdaniem zasługuje na nieco więcej uwagi. Zastanawiam się tylko, czy jest ktoś, kto z powodzeniem to osiągnął i chętnie podzieliłby się swoją mądrością.
EGHDK,
1
@EGHDK Sprawdź serię artykułów: android.cyrilmottier.com/?p=658
Alex Lockwood
2
Odpowiedziałem na to pytanie jakiś czas temu, ale wróciłem, aby ponownie podkreślić, że Prixing ma najlepsze dostępne menu ... zdecydowanie. Jest absolutnie piękny, idealnie gładki i zawstydza Facebooka, Google+ i YouTube'a. EverNote jest też całkiem niezły ... ale wciąż nie tak doskonały jak Prixing. Sprawdź tę serię postów na temat tego, jak zaimplementowano menu rozwijane (od samego programisty w Prixing!).
Alex Lockwood
2
W wersji 13 Androida (maj 2013) dostępny jest moduł DrawerLayout służący do tworzenia szuflady nawigacji, którą można wyciągnąć z krawędzi okna. Szuflada nawigacji jest teraz wzorem. developer.android.com/tools/extras/support-library.html
Wubao Li

Odpowiedzi:

152

Edytuj # 3:

Wzór szuflady nawigacji jest oficjalnie opisany w dokumentacji Androida!

wprowadź opis zdjęcia tutaj Sprawdź następujące linki:

  • Dokumenty projektowe można znaleźć tutaj .
  • Dokumenty dla programistów można znaleźć tutaj .

Edytuj # 2:

Roman Nurik (inżynier ds. Projektowania Androida w Google) potwierdził, że zalecane zachowanie polega na tym, aby nie przesuwać paska akcji podczas otwierania szuflady (podobnie jak aplikacja YouTube). Zobacz ten post w Google+ .


Edycja nr 1:

Odpowiedziałem na to pytanie jakiś czas temu, ale wróciłem, aby ponownie podkreślić, że Prixing ma najlepsze dostępne menu ... zdecydowanie . Jest absolutnie piękny, idealnie gładki i zawstydza Facebooka, Google+ i YouTube'a. EverNote jest też całkiem niezły ... ale wciąż nie tak doskonały jak Prixing. Sprawdź tę serię postów na temat tego, jak zaimplementowano menu rozwijane (od samego programisty w Prixing!).


Oryginalna odpowiedź:

Adam Powell i Richard Fulcher rozmawiają o tym w 49:47 - 52:50 w dyskusji Google I / O zatytułowanej „Nawigacja w Androidzie”.

Podsumowując swoją odpowiedź, od daty tego ogłoszenia wysuwane menu nawigacyjne nie jest oficjalnie częścią standardu projektowania aplikacji na Androida. Jak zapewne odkryłeś, obecnie nie ma natywnego wsparcia dla tej funkcji, ale mówiono o tym, aby uczynić ją dodatkiem do nadchodzącej wersji pakietu wsparcia.

Jeśli chodzi o aplikacje YouTube i G +, wydaje się dziwne, że zachowują się inaczej. Domyślam się, że powodem, dla którego aplikacja YouTube ustala pozycję paska akcji, jest:

  1. Jedną z najważniejszych opcji nawigacyjnych dla użytkowników korzystających z aplikacji YouTube jest wyszukiwanie, które odbywa się SearchViewna pasku działań. Pod tym względem sensowne byłoby ustawienie statycznego paska akcji, ponieważ pozwoliłby on użytkownikowi zawsze mieć możliwość wyszukiwania nowych filmów.

  2. Aplikacja G + używa ViewPagerdo wyświetlania zawartości, więc dostosowanie menu do treści układu (tj. Wszystkiego pod paskiem akcji) nie miałoby większego sensu. Przesuwanie ma zapewniać nawigację między stronami, a nie globalną nawigację. Być może dlatego postanowili to zrobić inaczej w aplikacji G + niż w aplikacji YouTube.

    Z drugiej strony sprawdź aplikację Google Play, aby uzyskać inną wersję „menu wysuwanego” (gdy znajdziesz się na skrajnej lewej stronie, przesuń palcem w lewo i pojawi się menu „pół strony”).

Masz rację, ponieważ nie jest to zbyt konsekwentne zachowanie, ale nie wydaje się, że zespół Androida ma 100% konsensus co do tego, jak to zachowanie należy jeszcze wdrożyć. Nie zdziwiłbym się, gdyby w przyszłości aplikacje były aktualizowane tak, aby nawigacja w obu aplikacjach była identyczna (wydawało się, że bardzo zależy na tym, aby nawigacja była spójna we wszystkich aplikacjach stworzonych przez Google podczas rozmowy).

Alex Lockwood
źródło
73
Prixing, Evernote i Spotify mają dość duże zespoły piszące swoje aplikacje Jestem dyrektorem generalnym Prixing i chciałbym wyjaśnić, że mamy tylko jednego prawdziwego programistę Androida (ale bardzo utalentowanego, Cyril Mottier)
EricLarch
W wersji 13 Androida (maj 2013) dostępny jest moduł DrawerLayout służący do tworzenia szuflady nawigacji, którą można wyciągnąć z krawędzi okna. Szuflada nawigacji jest teraz wzorem. developer.android.com/tools/extras/support-library.html
Wubao Li
chociaż NavigationDrawer jest obecny w V4, potrzebuje ActionBar, który nie jest jeszcze dostępny w V4, więc nie może go używać w aplikacjach o poziomie API poniżej 11.
Nayanesh Gupte
1
@NayAneshGupte zawsze możesz użyć ActionBarSherlock, aby użyć ActionBar poniżej poziomu API 11.
tasomaniac
Wygląda na to, że nie ma mowy o wprowadzeniu sztucznego opóźnienia, jeśli chcesz, aby ścisła animacja była płynna?
theblang
15

Niedawno rozwidliłem bieżący projekt Github o nazwie „RibbonMenu” i zmodyfikowałem go, aby dopasować go do moich potrzeb:

https://github.com/jaredsburrows/RibbonMenu

Jaki jest cel

  • Łatwość dostępu: Umożliwia łatwy dostęp do menu, które można przesuwać i wysuwać
  • Łatwość implementacji: Zaktualizuj ten sam ekran, używając minimalnej ilości kodu
  • Niezależność: nie wymaga bibliotek pomocniczych, takich jak ActionBarSherlock
  • Personalizacja: łatwa zmiana kolorów i menu

Co nowego

  • Zmieniono animację przesuwaną, aby pasowała do aplikacji Facebook i Google+
  • Dodano standardowy ActionBar (możesz wybrać ActionBarSherlock)
  • Używany menu do otwierania menu
  • Dodano możliwość aktualizacji ListView na głównej aktywności
  • Dodano 2 ListViews do menu, podobne do aplikacji Facebook i Google+
  • Dodano także AutoCompleteTextView i przycisk, aby pokazać przykłady wdrożenia
  • Dodano metodę umożliwiającą użytkownikom naciśnięcie przycisku „Wstecz”, aby ukryć menu, gdy jest otwarte
  • Pozwala użytkownikom na interakcję z tłem (głównym ListView) i menu jednocześnie, w przeciwieństwie do aplikacji Facebook i Google+!

Pasek akcji z wyłączonym menu

Pasek akcji z wyłączonym menu

Pasek akcji z wybranym menu i wyszukiwaniem

Pasek akcji z wybranym menu i wyszukiwaniem

Jared Burrows
źródło
5

Istnieje świetna implementacja tego NavigationDrawer, zgodna z Wytycznymi Google Material Design (i zgodna z API 10) - biblioteka MaterialDrawer (link do GitHub) . W momencie pisania, maj 2017, jest aktywnie wspierany.

Jest dostępny w repozytorium Maven Central . Konfiguracja zależności stopniowej:

compile 'com.mikepenz:materialdrawer:5.9.1'

Konfiguracja zależności Maven:

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

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

naXa
źródło
@lmiguelvargasf, w jaki sposób obrazujesz dopasowanie projektu GitHub do odpowiedzi ?! Podziel się swoimi pomysłami.
naXa
2

Wiem, że to stare pytanie, ale najbardziej aktualną odpowiedzią jest skorzystanie z biblioteki Android Support Design , która ułatwi Ci życie.

Sotti
źródło
2

Osobiście podoba mi się navigationDraweroficjalna aplikacja na Dysku Google. Po prostu działa i działa świetnie. Zgadzam się, że szuflada nawigacji nie powinna przesuwać paska akcji, ponieważ jest to kluczowy punkt do otwierania i zamykania szuflady nawigacji.

Jeśli nadal próbujesz uzyskać takie zachowanie, niedawno utworzyłem projekt Called SherlockNavigationDraweri, jak można się spodziewać, jest implementacja szuflady nawigacyjnej z urządzeniami ActionBarSherlockdziałającymi w wersjach wcześniejszych niż plaster miodu. Sprawdź to:

SherlockNavigationDrawer github

Nicolas Jafelle
źródło