Fragmente, prädiktive Anpassung der RückenanimationAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Fragmente, prädiktive Anpassung der Rückenanimation

Post by Anonymous »

Um die Predictive Back-Funktion in einer App zu implementieren, die Fragmente und Navigationskomponenten verwendet, gibt es zwei Optionen:
Option A: Verwenden Sie die Übergangs-API.
Legen Sie einfach Animator-Animationen direkt in nav_graph-Aktionen fest:

Code: Select all



Oder weisen Sie Übergangsinstanzen (wie Fade oder Slide) den Fragmentübergangseigenschaften zu (

Code: Select all

enterTransition
, exitTransition usw.):

Code: Select all

// Fragment's OnViewCreated

returnTransition = Slide(Gravity.END)
Option B: Verwenden Sie OnBackPressedCallback.
Es bietet Methoden zur Vorhersage des Zurück-Fortschritts, mit denen Sie manuell animieren können (Codebeispiel).
Was ist, wenn ich die Vorhersage des Zurück-Vorgangs für Fragmente implementieren möchte, aber unterschiedliche Übergangsanimationen abspielen möchte, je nachdem, wo die Zurück-Geste begonnen hat (zumindest auf der Seite des Bildschirms)?
Option B bietet uns handleOnBackStarted-Methode mit BackEventCompat-Parameter, der uns mit der getSwipeEdge-Methode eine Seite der Geste geben kann, und handleOnBackProgressed-Methode zum Animieren. Es gibt jedoch eine Einschränkung (in den Dokumenten erwähnt): „Benutzer können das vorherige Fragment nicht sehen, wenn sie zurückwischen“ – d. h. kein Suchen. Daher ist es fast sinnlos, diese Option für die Implementierung des prädiktiven Zurücksetzens zu verwenden – wenn der Benutzer mit der Animation fortfährt, sieht er einen leeren Bildschirm statt des vorherigen Fragments.
Option A funktioniert gut, die Suche wird unterstützt, aber es gibt keine Möglichkeit, die Seite und die Startkoordinaten der Geste mit diesem Ansatz zu erkennen.
Das Kombinieren von Optionen funktioniert auch nicht, da das Hinzufügen von OnBackPressedCallback die Kontrolle über die Suche übernimmt Übergangs-API zum Rückruf und definierte Übergangsanimation werden einfach nach handleOnBackPressed abgespielt.
Einige andere Optionen, über die ich nachgedacht habe:
  • Erstellen Sie einen benutzerdefinierten FragmentNavigator, um das Hinzufügen und Verbergen von FragmentTransaction zu verwenden und dann die vorherige Fragmentansicht für die Suche in OnBackPressedCallback verwenden zu können. Es scheint ein Aufwand zu sein, alle vorherigen Fragmente im Speicher zu behalten.
  • Übergeben Sie irgendwie die aktuelle Fragmentansicht an das nächste Fragment und verwenden Sie sie in OnBackPressedCallback für die Suche. Möglicherweise ist auch der Speicher ineffizient.
  • Rufen Sie das vorherige Fragment OnCreateView manuell auf, um die Ansicht für die Suche in OnBackPressedCallback zu erhalten. Erstellung von Doppelansichten, Anzeigeinkonsistenzen, Speicherprobleme usw.
  • Erkennen Sie die Zurück-Geste mithilfe unsichtbarer Ansichten an den Seiten des Bildschirms – die Erkennung erfolgt, nachdem die Vorhersage zurück gestartet wurde.
Übersehe ich also etwas oder ist das mit Fragmenten wirklich unmöglich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post