Ich habe ein Problem mit Navigation Drawer, es ist zu langsam, die Lösung, nach der ich suche, ist, die Schublade zuerst zu schließen und dann die Aktivität zu zeigen, aber es funktioniert nicht, ich vermisse etwas.
%Vor%Sie können es tun, um Schubladen-Verzögerungen zu vermeiden, ändern Sie onItemClick :
%Vor% Bearbeiten: Bevorzugter Weg sollte DrawerListener auf DrawerLayout setzen und das Fragment in onDrawerClosed
so:
Ich denke, ich habe die beste Lösung dafür gefunden!
Zuerst machen Sie Ihre Fragmenttransaktion wie folgt:
%Vor% Ich weiß, es sieht nutzlos aus, ein Runnable zu posten, aber dieser Hack vermeidet Verzögerungen bei der Klick-Animation auf der Schublade, besonders wenn Sie ihn benutzen
android:background="?attr/selectableItemBackground"
für ein anklickbares Element.
Und dann schließen Sie die Schublade am Ende der onResume () -Funktion Ihres Fragments (in diesem Beispiel ist es "finalMenuFragment") wie folgt:
%Vor%Wieder weiß ich, dass es dumm scheint, ein Runnable zu posten, aber es macht die Close-Animation glatt.
Auf diese Weise schließt sich die Schublade so schnell wie möglich, wenn Sie glatte Animationen wünschen. Wenn Ihr Fragment nicht viele Ansichten enthält, wird es schneller und ohne Verzögerung geschlossen.
Ich hätte gerne ein Feedback dazu, wenn jemand diese Lösung getestet hat, hoffe es hilft!
Versuchen Sie es. Die Schublade wird aufgefordert, die Sendung zu schließen. Dies dient dazu, sicherzustellen, dass die Aktivität oder das fragliche Fragment zuerst geladen wird, bevor die Schublade geschlossen wird.
Inside MainActivity
%Vor%Inside-Aktivität oder Fragment
%Vor%Sie können es von onCreate oder onAttach in einen früheren Prozess ändern, aber es hängt von Ihrer App ab.
Ich denke, die Verwendung von Verzögerungen für Fragmenttransaktionen ist die instabilste Lösung.
Wenn Sie onDrawerClosed ausführen, erhalten Sie eine leichte Verzögerung zwischen dem Schließen und dem Erscheinen eines Fragments.
Ich ziehe es vor, die Transaktion direkt nach der Navigation auszuführen, schließe die Schublade danach mit postDelayed 200ms (in runnable check für den Fall, dass es nicht null ist). Das Fragment wird geöffnet, bevor die Schublade geschlossen wird.
Nicht nur die Verzögerung vom Tippen bis zum Schließen der Schublade ist kürzer als die nach dem Schließen der Schublade und dem nächsten erscheinenden Fragment, es ist besser, wenn der Benutzer den Finger vom Bildschirm entfernt - Verzögerung ist weniger offensichtlich.
Wenn es nachlässt, können Sie eine Hardwarebeschleunigung anfordern. Wenn manifest dies zu Ihrer Aktivität hinzufügen
%Vor%Wenn Ihre oncreate-Methode diesen Code hinzufügt
%Vor%Jetzt haben Sie Hardware-Beschleunigung in Ihrer Aktivität. Quelle: Ссылка
Tags und Links java android fragmenttransaction navigation-drawer