Naprawdę chcę zaimplementować to (boczną nawigację) we własnej aplikacji, czy ktoś wie, jak Google to zrobił?
Wydaje się, że odłożyli bieżące okno na bok i włączyli własną nawigację typu fly-in.
Naprawdę chcę zaimplementować to (boczną nawigację) we własnej aplikacji, czy ktoś wie, jak Google to zrobił?
Wydaje się, że odłożyli bieżące okno na bok i włączyli własną nawigację typu fly-in.
Odpowiedzi:
W rzeczywistości jest na to sposób. Nawet bez implementacji własnego
ActionBar
.Wystarczy spojrzeć na
hierachyviewer
! (Znajduje się w katalogu narzędzi)Jest
DecorView
iLinearLayout
jako dziecko. TenLinearLayout
zawiera zarównoActionBar
i inne treści. Możesz więc po prostu zastosować trochęFrameLayout.LayoutParams
do tegoLinearLayout
i uzyskać w ten sposób trochę miejsca po lewej stronie. Następnie możesz wypełnić to miejsce swoim menu-ListView i nałożyć inną zawartość za pomocą FrameLayout, który po kliknięciu zwija menu. Oto więc kod:Najpierw klasa do zwijania / rozwijania (SlideMenu.java):
Kilka metod pomocy (dla mnie w static Functions.java):
Następnie układy:
Układ menu (res / layout / menu.xml)
Układ listitems (res / layout / menu_listitem.xml):
Jak tego użyć:
W twoim
onCreate()
:W programie obsługi przycisku głównego ActionBar:
Otóż to!
A teraz mały zrzut ekranu przedstawiający to w akcji:
O ile wiem, to działa. Jeśli napotkasz jakiekolwiek problemy lub moje wyjaśnienia nie są jasne, skontaktuj się ze mną!
EDYCJA:
ExtendedViewPager
&ExtendedPagerStrip
:ExtendedViewPager:
ExtendedPagerTabStrip:
Używam tego
SlideMenu
dla działalności zViewPager
zePagerTabStrip
na kartach takich jak Talk, itp Market Nie można wyłączyć tych poglądów w prosty sposób, a więc dwie klasy wyżej tylko przedłużyć ich zatrzymaćonTouch
zdarzenie, gdy wyłączone.źródło
Jest kilka prób, aby to zrobić, jednak nie znalazłem jeszcze biblioteki ani kodu źródłowego, jak z powodzeniem zaimplementować to za pomocą paska akcji na wszystkich poziomach API. Jedna obiecująca biblioteka jest tutaj
https://github.com/jfeinstein10/SlidingMenu
oto film przedstawiający przykładową aplikację .
tutaj jest link do aplikacji Google Play .
Działa to z ActionbarSherlock. Będziesz musiał zbudować bibliotekę SlidingMenu z ABS, aby działała. Działa i wygląda świetnie!
źródło
Dokonałem podsumowania oryginalnej implementacji i dodałem parsowanie XML, a także
autodetection
prawdopodobnie obecnyactionbar
, więc działa z natywnym i pomocniczym paskiem akcji, takim jakActionBarSherlock
.Całość jest teraz projektem biblioteki wraz z przykładową aplikacją i jest opisana w menu przesuwnym dla Androida. Dziękujemy scirocco za wstępny pomysł i kod!
źródło
Jeśli używasz poziomu API wyższego niż 11, możesz zastosować znacznie prostsze podejście inspirowane odpowiedzią udzieloną przez @Scirocco
Chodzi o to, aby użyć
ValueAnimator
tego, który przekształca, a nie tylko animuje główny układ za pomocą paska akcji, dzięki czemu możesz wchodzić w interakcje z powiększonym widokiem, którego chcesz użyć jako przesuwanego panelu. Wartości zakodowane na stałe należy zastąpić czymś, co jest przydatne w Twojej aplikacji.Mam nadzieję, że to pomoże :)
źródło
Cóż, obecnie pracuję nad projektem i natknąłem się na menu przesuwne, wyszukałem w Google, ale jestem bardzo rozczarowany, widząc, że nikt nie podał fragmentu kodu ani wskazówek, jak rozpocząć tworzenie przesuwanego menu, ale każdy podał link do niektórych projekty / biblioteki github do wykorzystania, postanowiłem zrobić to sam i wreszcie mam gotowe własne menu przesuwne ...
Spędziłem nad tym dwa dni
1. o tworzeniu animacji ślizgania się
2. aby działał ze wszystkimi rozdzielczościami ekranu
Jest to naprawdę łatwe i proste, gdy już masz pojęcie o animacjach , przeczytałem gdzieś, nie ma sensu ponownie wymyślać Wheel (ludzie, którzy odwołują się do kodu źródłowego przesuwanego menu na githubie), ale uważam, że powinieneś przynajmniej raz spróbuj stworzyć własny, aby mieć pojęcie, jak to faktycznie działa i działa: P
więc to jest obraz tego, jak będzie działać moje menu przesuwne
1.Find.xml
//later in the code it will be refer as findLayout
2.Filter.xml
//later in code refer as FilterLayout
W find.xml mam włączone filter.xml początkowo który jest niewidoczny
Teraz FilterAnimation.java
Teraz Find.java
Oto animacje res / anim
1.filter_slide_in.xml
2.filter_slide_out.xml
3.other_slide_in.xml
4.other_slide_out.xml
Oto kompletne działające i funkcjonalne przesuwne menu i możesz je dostosować do swoich wymagań, jeśli ktoś nadal ma problemy z konfiguracją, nie krępuj się zapytać, z przyjemnością Ci pomogę :)
źródło
Stworzyłem własne rozwiązanie do wysuwania widoku i ujawniania menu pod spodem, ponieważ wiele innych rozwiązań wydawało się nie działać na starszych wersjach Androida lub brakowało odpowiednich instrukcji, jak je uruchomić.
Moje rozwiązanie ma następujące cechy:
Rozwiązanie wykorzystuje układ niestandardowy o nazwie SlidingMenuLayout, do którego oczekuje się dodania 2 widoków. Pierwszy dodany widok to menu, a drugi to widok główny.
Najprostszym sposobem dodania układu do istniejącego projektu jest zastąpienie
setContentView()
metody działania:W tym przykładzie
MenuView
jest to widok, który faktycznie pokaże menu. Wdrożenie tego poglądu należy do Ciebie.Na koniec możesz dodać przycisk (zazwyczaj w lewym górnym rogu głównego widoku), który wywołuje
openMenu()
lubcloseMenu()
w odpowiednim układzie.Kod dla
SlidingMenuLayout
znajduje się na stronie projektu GitHub .źródło
Dla tych z Was, którzy korzystają z biblioteki SlidingMenu ( https://github.com/jfeinstein10/SlidingMenu ), istnieje sposób na jej podłączenie i wydaje się, że działa! Z pomocą @Scirocco umieść to w swoim
onCreate
działaniu:w zasadzie zastępuje
linearlayout
widok w dekorze rozszerzeniemslidingmenu
zamiast tego.Uwaga: testowałem to tylko lekko, ale wydaje się, że działa.
źródło
to jest moja klasa rozszerza
SlidingPaneLayout
. Można przesuwać za pomocą actioźródło