Ich möchte dies (die Seitennavigation) wirklich in einer eigenen App implementieren. Weiß jemand, wie Google dies geschafft hat?
Sie scheinen das aktuelle Fenster beiseite gezogen und eine eigene Fly-In-Navigation eingerichtet zu haben.
Ich möchte dies (die Seitennavigation) wirklich in einer eigenen App implementieren. Weiß jemand, wie Google dies geschafft hat?
Sie scheinen das aktuelle Fenster beiseite gezogen und eine eigene Fly-In-Navigation eingerichtet zu haben.
Antworten:
In der Tat gibt es einen Weg, dies zu tun. Auch ohne eigene zu implementieren
ActionBar
.Schauen Sie sich das an
hierachyviewer
! (Befindet sich im Tools-Verzeichnis)Da ist das
DecorView
und einLinearLayout
als Kind. DiesLinearLayout
enthält sowohl denActionBar
als auch den anderen Inhalt. Sie können also einfach einigeFrameLayout.LayoutParams
davon anwendenLinearLayout
Weise etwas Platz auf der linken Seite erhalten. Anschließend können Sie diesen Bereich mit Ihrer Menü-ListView füllen und den anderen Inhalt mit einem FrameLayout überlagern, das beim Klicken das Menü reduziert. Also, hier ist ein Code:Zunächst die Klasse zum Reduzieren / Erweitern (SlideMenu.java):
Einige hilfreiche Methoden (für mich in static Functions.java):
Dann die Layouts:
Layout des Menüs (res / layout / menu.xml)
Layout der Listenelemente (res / layout / menu_listitem.xml):
Wie man es benutzt:
In Ihrem
onCreate()
:Im Handler für Ihre ActionBar-Homebutton:
Das ist es!
Und jetzt ein kleiner Screenshot davon in Aktion:
Soweit ich weiß, funktioniert es. Wenn Sie Probleme haben oder meine Erklärungen nicht klar sind, kontaktieren Sie mich bitte!
BEARBEITEN:
ExtendedViewPager
&ExtendedPagerStrip
:ExtendedViewPager:
ExtendedPagerTabStrip:
Ich benutze dies
SlideMenu
für eine Aktivität mit einemViewPager
mitPagerTabStrip
für Registerkarten wie Sprechen, Markt usw. Sie können diese Ansichten auf einfache Weise deaktivieren, so dass die beiden Klassen über sie nur verlängern das stoppenonTouch
Ereignis , wenn deaktiviert.quelle
Es gibt mehrere Versuche , dies zu tun, aber ich habe noch keine Bibliothek oder keinen Quellcode gefunden, wie ich ihn erfolgreich mit der Aktionsleiste auf allen API-Ebenen implementieren kann. Eine vielversprechende Bibliothek ist hier
https://github.com/jfeinstein10/SlidingMenu
Hier ist ein Video der Beispiel-App .
Hier ist der Link zur Google Play- App.
Dies funktioniert mit ActionbarSherlock. Sie müssen die SlidingMenu-Bibliothek mit ABS erstellen, damit sie funktioniert. Funktioniert und sieht gut aus!
quelle
Hat eine Zusammenfassung der ursprünglichen Implementierung und das Hinzufügen von XML-Parsing sowie
autodetection
eines möglicherweise vorhandenen hinzugefügtactionbar
, sodass es sowohl mit der nativen als auch mit einer Support-Aktionsleiste wie zActionBarSherlock
.Das Ganze ist jetzt ein Bibliotheksprojekt zusammen mit einer Beispiel-App und wird unter Sliding Menu für Android beschrieben. Vielen Dank an scirocco für die erste Idee und den Code!
quelle
Wenn Sie eine API-Stufe größer als 11 verwenden, können Sie einen viel einfacheren Ansatz verwenden, der von der Antwort von @Scirocco inspiriert ist
Hier geht es darum,
ValueAnimator
das Hauptlayout zu transformieren und nicht nur mit der Aktionsleiste zu animieren, damit Sie mit der aufgeblasenen Ansicht interagieren können, die Sie als Schiebefeld verwenden möchten. Sie sollten die fest codierten Werte durch etwas ersetzen, das für Ihre App von Nutzen ist.Ich hoffe das hilft :)
quelle
Nun, ich arbeite gerade an einem Projekt und bin auf das Sliding-Menü gestoßen. Ich habe gegoogelt, bin aber sehr enttäuscht zu sehen, dass niemand einen Code oder einen Hinweis gegeben hat, wie man mit dem Erstellen eines Sliding-Menüs beginnt, aber jeder hat einen Link zu einem gegeben Githubs Projekte / Bibliotheken zu verwenden, habe ich beschlossen, es selbst zu tun und schließlich habe ich mein eigenes Sliding Menu Ready ...
Ich habe zwei Tage damit verbracht
1. über Animationen des Gleitens
2. wie es mit allen Bildschirmauflösungen funktioniert
Es ist wirklich einfach und unkompliziert, sobald Sie eine Vorstellung von Animationen haben. Ich habe einige gelesen, in denen es nicht sinnvoll ist, das Rad neu zu erfinden (Leute, die sich auf den Github-Quellcode des Schiebemenüs beziehen), aber ich glaube, dass Sie es mindestens einmal tun sollten Versuchen Sie, Ihre eigenen zu erstellen, damit Sie eine Vorstellung davon bekommen, wie es tatsächlich funktioniert und funktioniert: P.
Das ist also ein Bild davon, wie mein Schiebemenü funktionieren wird
1.Find.xml
//later in the code it will be refer as findLayout
2.Filter.xml
//later in code refer as FilterLayout
In find.xml habe ich zunächst filter.xml eingefügt, was unsichtbar ist
Jetzt FilterAnimation.java
Jetzt Find.java
Hier sind die Animationen res / anim
1.filter_slide_in.xml
2.filter_slide_out.xml
3.other_slide_in.xml
4.other_slide_out.xml
Dort finden Sie ein komplettes funktionierendes und funktionales Schiebemenü, das Sie an Ihre Anforderungen anpassen können. Wenn jemand noch Probleme beim Einrichten hat, können Sie gerne fragen, ich helfe Ihnen gerne weiter :)
quelle
Ich habe meine eigene Lösung erstellt, um die Ansicht zu verschieben und ein Menü darunter anzuzeigen, da viele andere Lösungen auf älteren Android-Versionen anscheinend nicht funktionierten oder keine richtigen Anweisungen zur Funktionsweise hatten.
Meine Lösung hat folgende Funktionen:
Die Lösung verwendet ein benutzerdefiniertes Layout namens SlidingMenuLayout, zu dem voraussichtlich zwei Ansichten hinzugefügt werden. Die erste Ansicht, die Sie hinzufügen, ist das Menü, die zweite ist die Hauptansicht.
Der einfachste Weg, das Layout zu Ihrem vorhandenen Projekt hinzuzufügen, besteht darin, die
setContentView()
Methode Ihrer Aktivität zu überschreiben :In diesem Beispiel
MenuView
ist dies die Ansicht, in der das Menü tatsächlich angezeigt wird. Es liegt an Ihnen, diese Ansicht zu implementieren.Schließlich können Sie eine Schaltfläche hinzufügen (normalerweise in der oberen linken Ecke Ihrer Hauptansicht), die aufruft,
openMenu()
odercloseMenu()
das Layout entsprechend anpassen.Der Code für
SlidingMenuLayout
befindet sich auf der GitHub- Projektseite .quelle
Für diejenigen unter Ihnen, die die SlidingMenu- Bibliothek ( https://github.com/jfeinstein10/SlidingMenu ) verwenden, gibt es eine Möglichkeit, sie einzubinden, und sie scheint zu funktionieren! Mit Hilfe von @Scirocco setzen Sie dies
onCreate
für die Aktivität in Ihr :Im Grunde ist es das Ersetzen der
linearlayout
In-Dekor-Ansicht durch dieslidingmenu
stattdessen .Hinweis: Ich habe es nur leicht getestet, aber es scheint zu funktionieren.
quelle
Das ist meine Klasse erweitert
SlidingPaneLayout
. Kann mit actio gleitenquelle