Nowa aplikacja na Facebooku i jej nawigacja są takie fajne. Właśnie próbowałem zobaczyć, jak można go emulować w mojej aplikacji.
Czy ktoś ma pojęcie, jak to osiągnąć?
Po kliknięciu lewego górnego przycisku wyświetlany jest slajd strony i wyświetlany jest następujący ekran:
android
facebook
android-side-navigation
Harsha MV
źródło
źródło
Odpowiedzi:
Sam się z tym bawiłem i najlepszym sposobem, jaki mogłem znaleźć, było użycie FrameLayout i umieszczenie niestandardowego HorizontalScrollView (HSV) na górze menu. Wewnątrz HSV znajdują się widoki aplikacji, ale pierwszy widok jest przezroczysty. Oznacza to, że gdy HSV ma zerowe przesunięcie przewijania, menu wyświetli się (i zaskakująco będzie można je kliknąć).
Gdy aplikacja się uruchamia, przewijamy HSV do przesunięcia pierwszego widocznego widoku aplikacji, a gdy chcemy pokazać menu, przewijamy do tyłu, aby wyświetlić menu poprzez przezroczysty widok.
Kod jest tutaj, a dwa dolne przyciski (o nazwie HorzScrollWithListMenu i HorzScrollWithImageMenu) w działaniu Uruchom pokazują najlepsze menu, jakie mogłem wymyślić:
Wersja demonstracyjna przesuwanego menu Androida
Zrzut ekranu z emulatora (mid-scroll):
Zrzut ekranu z urządzenia (pełne przewijanie). Uwaga: moja ikona nie jest tak szeroka jak ikona menu Facebooka, więc widok menu i widok „aplikacji” nie są wyrównane.
źródło
getDrawingCache()
inne niż menu i tworząc ImageView z mapy bitowej. Następnie wywołajstartActivity(intent)
&overridePendingTransition(0, 0)
przyonClick
metodzieClickListenerForScrolling
klasy, aby natychmiast pokazać nową aktywność i uzyskać pożądany efekt.W tym projekcie bibliotecznym wdrożyłem nawigację typu wysuwanego na Facebooku .
Możesz łatwo wbudować go w aplikację, interfejs użytkownika i nawigację. Będziesz musiał wdrożyć tylko jedno Działanie i jeden Fragment, poinformuj bibliotekę o tym - a biblioteka zapewni wszystkie potrzebne animacje i nawigację.
W repozytorium można znaleźć projekt demo z użyciem biblioteki lib do implementacji nawigacji podobnej do Facebooka. Oto krótkie wideo z zapisem projektu demo .
Również ta biblioteka powinna być zgodna z tym wzorem ActionBar, ponieważ jest oparta na transakcjach działań i tłumaczeniach (nie transakcjach fragmentów i niestandardowych widokach).
W tej chwili najbardziej problem polega na tym, aby działał dobrze w aplikacjach, które obsługują zarówno tryb pionowy, jak i poziomy. Jeśli masz jakieś uwagi, prześlij je za pośrednictwem github.
Wszystkiego najlepszego,
Alex
źródło
((MenuActivity) getActivity()).getSlideoutHelper().close(); startActivity(new Intent(getActivity(), MyActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra("category", position));
Oto kolejna lib i moim zdaniem wydaje się najlepsza. Nie napisałem tego ...
AKTUALIZACJA:
Wydaje mi się, że ten kod działa najlepiej i przesuwa cały pasek działań podobnie do aplikacji G +.
Jak Google to zrobił? Przesuń ActionBar w aplikacji na Androida
źródło
Myślę, że aplikacja Facebook nie jest napisana w natywnym kodzie (mam na myśli kod natywny, używając układów w Androidzie), ale wykorzystali do tego webview i użyli bibliotek javascript ui, takich jak sencha . Można to łatwo osiągnąć za pomocą frameworka Sencha.
źródło
Oto kolejna (bardzo ładna) biblioteka open source!
Zaletą tego jest to, że można go łatwo zintegrować z ActionBarSherlock.
Oto link do projektu github
Oto link do pobrania Google Play
źródło
Właśnie wdrożyłem podobny widok dla mojego własnego projektu. Możesz to sprawdzić tutaj
Oto ekran przykładowej aplikacji opartej na bibliotece, którą napisałem:
Łatwo jest używać tego niestandardowego widoku jako elementu układu XML. Oto przykład:
Mam pytania dotyczące korzystania z biblioteki ActionsContentView. Mogę napisać mały artykuł na stronie Wiki projektów.
Niektóre zalety tej biblioteki:
Jest jedno ograniczenie:
Z pozdrowieniami, Steven
źródło
W wersji 13 pakietu pomocy Android (maj 2013 r.) Dostępny jest moduł DrawerLayout służący do tworzenia szuflady nawigacji, którą można wyciągnąć z krawędzi okna. A szuflada nawigacji jest teraz wzorem.
biblioteka obsługi v4
wzór szuflady nawigacji
źródło
Dokonano podsumowania istniejącej implementacji i przekształcił ją w projekt biblioteczny plus przykładową aplikację. Dodano także parsowanie XML, a także automatyczne wykrywanie potencjalnie obecnego paska akcji, więc działa on zarówno z natywnym, jak i pomocniczym paskiem akcji, takim jak ActionBarSherlock.
Ten również przesuwa pasek akcji!
Całość stanowi projekt biblioteki wraz z przykładową aplikacją i jest opisany w przesuwanym menu dla Androida, takim jak aplikacje Google i Facebook . Dzięki scirocco za wstępny pomysł i kod!
źródło
Jest to proste i eleganckie: https://github.com/akotoe/android-slide-out-menu.git
Migawka:
źródło
Myślę, że biblioteka nie wspomina:
jfeinstein10 / SlidingMenu
github url:
https://github.com/jfeinstein10/SlidingMenu
źródło
Nie mogę jeszcze skomentować odpowiedzi udzielonej przez @Paul Grime, w każdym razie przesłałem do jego projektu github poprawkę dotyczącą problemu migotania ...
Zamieszczę poprawkę tutaj, może ktoś jej potrzebuje. Musisz tylko dodać dwa wiersze kodu. Pierwszy poniżej wywołania anim.setAnimationListener:
A drugi po wywołaniu app.layout ():
Mam nadzieję że to pomoże :)
źródło
Zaimplementowałem to za pomocą AbsoluteLayout i prostego kontrolera slajdów, który przesuwa widok do ujemnego przesunięcia, aby go ukryć.
Jeśli ktoś jest zainteresowany, mogę wyczyścić kod / układ i opublikować. Wiem, że AbsoluteLayout jest przestarzałe, ale było to bardzo proste wdrożenie. Widok z lewej / Widok z prawej, a kiedy „przesuwasz się”, po prostu przenieś widok z lewej strony z przesunięcia -X do szerokości urządzenia - cokolwiek chcesz pokazać w widoku z prawej
źródło
źródło
W ramach mojej wspólnej biblioteki Androida (ACL) zaimplementowałem własny pasek boczny. Główne zalety:
Kod źródłowy: https://github.com/serso/android-common/tree/master/views/src/main/java/org/solovyev/android/view/sidebar
Zastosowanie: https://github.com/serso/android-common/blob/master/samples/res/layout/acl_view_layout.xml
źródło
Ostatnio pracowałem nad wersją implementacji przesuwanego menu. Wykorzystuje popularną bibliotekę Androida J.Feinsteina SlidingMenu.
Sprawdź kod źródłowy na GitHub:
https://github.com/baruckis/Android-SlidingMenuImplementation
Pobierz aplikację bezpośrednio na urządzenie, aby spróbować:
https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation
Kod powinien być zrozumiały z uwagi na komentarze. Mam nadzieję, że będzie to pomocne! ;)
źródło
Znalazłem najprostszy sposób na to i jego działanie. Użyj prostej szuflady nawigacji i wywołaj drawer.setdrawerListner () i użyj metody mainView.setX () w metodzie drawerSlide poniżej lub skopiuj mój kod.
plik XML
plik java
Dziękuję Ci
źródło
Zrobię tu odważne domysły ...
Zakładam, że mają układ, który reprezentuje niewidoczne menu. Po naciśnięciu przycisku menu animują układ / widok na górze, aby odsunąć się na bok i po prostu włączyć widoczność układu menu. Nie myślałem o tym, że powoduje to jakiekolwiek problemy z indeksem Z w widokach ani o tym, jak to kontrolują.
źródło
Android dodał szufladę nawigacji. Zobacz to
połączyć
źródło
Oto przewodnik po projektowaniu i rozwoju znajdujący się w oficjalnej dokumentacji Androida, bez potrzeby dodawania nieoficjalnej biblioteki zewnętrznej. Zrobi to tylko biblioteka wsparcia Androida. Znajdź linki tutaj.
zaprojektuj i opracuj .
źródło
Aplikacja Facebook na Androida jest prawdopodobnie zbudowana z Fragmentów . Menu to jeden fragment, a dogłębna aktywność (kanał informacyjny / wydarzenia / przyjaciele itp.) To drugi fragment. Zasadniczo układ „wzorcowy i szczegółowy” tabletu na telefonie.
źródło
Aby uzyskać informacje, ponieważ biblioteka kompatybilności zaczyna się od 1.6, a ta aplikacja Facebook działa również na urządzeniach z Androidem 1.5, nie można tego zrobić z Fragmentami.
Możesz to zrobić w następujący sposób: Utwórz działanie „podstawowe” BaseMenuActivity, w którym umieścisz całą logikę dla elementu onItemClickListener dla listy menu i zdefiniujesz 2 animacje („otwieranie” i „zamykanie”). Na końcu / na początku animacji pokazujesz / ukrywasz układ BaseMenuActivity (nazwijmy to menu_layout). Układ tego działania jest prosty, jest to tylko lista z elementami + przezroczysta część po prawej stronie listy. Ta część będzie klikalna, a jej szerokość będzie taka sama jak „przycisk przesuwania”. Dzięki temu będziesz mógł kliknąć ten układ, aby rozpocząć animację, aby przesuwać content_layout w lewo i zajmować cały ekran. Dla każdej opcji (tj. Pozycji z listy menu) tworzysz „ContentActivity”, który rozszerza BaseMenuActivity. Następnie, po kliknięciu elementu na liście, uruchamiasz swój ItemSelectedContentActivity z widocznym menu (które zamkniesz, gdy tylko rozpocznie się aktywność). Układy dla każdej ContentActivity są FrameLayout i obejmują znaki i. Wystarczy przesunąć content_layout i wyświetlić menu_layout, kiedy chcesz.
To sposób na zrobienie tego i mam nadzieję, że byłem wystarczająco jasny.
źródło
Bawiłem się tym przez ostatnie kilka dni i wymyśliłem rozwiązanie, które w końcu jest dość proste i które działa przed Honeycomb. Moim rozwiązaniem było animowanie widoku, który chcę przesunąć (
FrameLayout
dla mnie) i nasłuchiwanie końca animacji (w tym momencie, aby przesunąć lewą / prawą pozycję widoku). Wkleiłem tutaj moje rozwiązanie: Jak animować tłumaczenie widokuźródło
Po kilku godzinach poszukiwań odkryłem, że rozwiązanie Paula Grime'a jest prawdopodobnie najlepsze. Ale ma za dużo funkcjonalności. Dlatego może być trudno uczyć się dla początkujących. Chciałbym więc przedstawić moją implementację, która pochodzi z pomysłu Paula, ale jest prostsza i powinna być łatwa do odczytania.
implementacja bocznego paska menu przy użyciu kodu Java bez XML
źródło
Nigdzie w powyższych odpowiedziach nie widziałem niesamowitej aplikacji SimonVT / android-menudrawer. Oto link
https://github.com/SimonVT/android-menudrawer
Jest bardzo łatwy w użyciu i można go umieścić po lewej, prawej, górze lub na dole. Bardzo dobrze udokumentowany przykładowym kodem i licencją Apache 2.0.
źródło
W czerwcu 2012 r. Google dodało „szablony” we wtyczce Eclipse ADT i istnieje szablon o nazwie „przepływ główny / szczegółowy”, który robi dokładnie to (na podstawie fragmetów)
źródło