Navigationsschublade auf Android

9

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%     
AND4011002849 27.08.2014, 18:45
quelle

8 Antworten

25

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:

%Vor% %Vor%     
Yuraj 27.08.2014, 19:59
quelle
18

Anstatt eine Transaktion in onClick durchzuführen, warum nicht in onDrawerClosed von DrawerLayout.DrawerListener?

    
uDevel 27.08.2014 19:48
quelle
5

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!

    
Quentin G. 08.09.2015 10:58
quelle
2

Ich habe gerade dieses Problem nur in One-Line gelöst

Gehen Sie zu Ihrer Menifest -Datei. In Ihrer Schublade Aktivität legen Sie HardwareAccelerated fest, um Verzögerungen beim Öffnen der Schublade zu vermeiden.

%Vor%     
Darshan 07.12.2017 05:24
quelle
0

Siehe dies für eine scheinbar korrekte Kombination der beiden oben genannten Antworten.

    
Metallica 17.09.2014 18:47
quelle
0

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.

    
Azizi Musa 24.06.2015 07:38
quelle
0

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.

    
Deividas Strioga 22.11.2017 10:13
quelle
0

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: Ссылка

    
sajad abasi 18.02.2018 19:09
quelle