google hat das DrawerLayout eingeführt, das ein Menü auf der linken Seite des Bildschirms anzeigt, wenn Sie auf den "up" -Button der Aktionsleiste klicken.
Da die Bibliothek noch nicht auf actionBarSherlock unterstützt wird, gibt es bereits eine Möglichkeit, sie zu umgehen, indem Sie dieses Projekt .
es hat bereits Varianten für viele Apps: Strömungen, Gmail, Hangouts, Youtube ...
in der App "current" (und in youtube), wenn der Benutzer die (linke) Seite von links nach rechts verschiebt, wird das DrawerLayout angezeigt, egal, wo der Finger die Berührung gestartet hat .
Wie kann ich den gleichen Effekt erzielen? vielleicht sollte ich onInterceptTouchEvent verwenden?
Es gibt nicht viel Dokumentation und Tutorials, welche coolen Dinge möglich sind, außer diesem Link (ok und auch dieses ). Sie sagen (in dem Teil von "Gib dem Benutzer einen kurzen Blick"), dass etwa 20dp auf der linken Seite für diese Funktionalität verwendet wird, aber ich kann sehen, dass "Ströme" mit viel größerer Fläche arbeiten.
es scheint, die Bibliothek ist noch nicht ganz fertig, und so kann die Layout-XML-Datei nicht einmal im visuellen UI-Editor angezeigt werden ...
EDIT: Es scheint, dass die Bibliothek Open Source ist. Code ist verfügbar auf:
%Vor%jetzt ist die Frage, wie es funktioniert, wie ich geschrieben habe, so dass es wie auf youtube funktionieren würde, uns erlauben, anzupassen, wie es aussieht und von wo man es scrollen kann.
SlidingMenu ist die beste Schiebe-Bibliothek, die ich jemals gefunden habe, es ist eine sehr gute Bibliothek.
Sie können getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN)
aktivieren Fling für alle Bildschirm einstellen.
Das Problem ist, dass DrawerLayout ViewDragHelper verwendet, das eine Standard EDGE_SIZE von 20dp, mit dem die mEdgeSize wie folgt berechnet wird:
%Vor%Hier ist eine Funktion, die mEdgeSize auf einen Prozentsatz der Anzeigebreite setzt:
%Vor%Nehmen wir an, Sie möchten, dass 30% Ihrer linken Kante auf Diaereignisse reagieren und die Navigationsleiste öffnen. Rufen Sie dann einfach:
auf %Vor%Ich habe versucht, die standardmäßige EDGE_SIZE-Lösung zu ändern, und habe auch auf das Problem mit dem langen Klicken gestoßen. Schließlich Ifound override dispatchTouchEvent und Schublade abhängig von der Schieberichtung durch Berechnung von X-Offset zu öffnen.
%Vor%Indem Sie die Hilfe anderer nutzen: (first) (zweites)
Ich habe festgestellt, dass es mit Hilfe von Reflexionen möglich ist, die defekte 20dp-Bildschirmkante zu ändern, damit das Schubladenmenü verschoben werden kann
Nach dem Deklarieren von Inhalten und Schubladen können Sie Folgendes tun:
%Vor%Nun, es funktioniert für mich, Mann!
Mit diesem Projekt SlidingMenu können Sie diesen Effekt erzielen und mit ActionBarSherlock integrieren.
Um das Menü von links nach rechts zu verschieben, passen Sie das Menü bei der Erstellung an und fügen Sie Folgendes hinzu:
%Vor%Hoffe, das hilft.
Erstens bin ich mir nicht sicher, was Sie damit meinen, dass ActionBarSherlock DrawerLayout nicht unterstützt. Du kannst ziemlich glücklich mit dem DrawerLayout und ActionBarSherlock arbeiten, ich habe Apps, die diese Kombination verwenden. Sie müssen die Support-Jar-Version ändern, aber ich habe festgestellt, dass ActionbarSherlock damit kein Problem hat.
Implementieren Sie DrawerLayout auf die übliche Weise. Aktivieren Sie dann in Ihrem Fragment onTouchEvent oder interceptTouchEvent, und wenn der Typ ein Ereignis vom Typ move ist, das von links nach rechts verschoben wird, können Sie die openDrawer-Methode für DrawerLayout aufrufen. Sie müssen für die Entfernung, die der Finger zurücklegt, eine Handhabung hinzufügen, um sicherzustellen, dass der Aufruf zum Öffnen der Schublade nicht zu empfindlich ist.
Wenn wir die Standardkantenseite überschreiben, wird der Bildschirm des Abschnitts, auf dem er überlappt, nicht mehr funktionieren. Ich habe den obigen Code in viewpager verwendet, aber jetzt, wenn ich von rechts nach links blättrele, bleibt die nächste Seite unverändert. Was wird die Lösung dafür sein? Ich habe setDrawerLeftEdgeSize(this,mDrawerLayout,distance );
wie oben ..
Tags und Links android drawerlayout slidingmenu