Recycler-Ansicht - Ändern der Objektansicht beim Scrollen (für karussellähnlichen Effekt)

8

Ich muss eine vertikale Recycler-Ansicht erstellen, in der die Objektansicht in der Mitte des Bildschirms so geändert werden sollte, dass beim Scrollen ein ähnlicher Zoom-Effekt angezeigt wird.

Dinge, die ich versucht habe, aber nicht funktioniert:

  1. Hinzufügen eines Scroll-Listeners und Schleifen von Elementansichten nach Position, Messen der zentrierten Position und Aktualisieren von LayoutParams von zentriert view .

    • RecyclerView lässt die Position von Elementen oder die Ansicht beim Scrollen nicht aktualisieren. Erzeugt IllegalStateException , wenn solche Operationen in onScrolled ausgeführt werden
  2. Ändern von LayoutParams der zentrierten Objektansicht in onScrollStateChanged während des Bildlaufstatus ist IDLE oder SETTLING .

    • Nur die Ansicht wird aktualisiert, nachdem der Bildlauf abgeschlossen wurde / wird, und nicht während des Bildlaufs von Elementen.
  3. Die letzte verbleibende Option besteht in der Implementierung der eigenen benutzerdefinierten LayoutManager , die den Standard LayoutManager erweitern würde.

    • Soweit ich weiß, erfordert die Implementierung von "custom Layoutmanager " viel komplexere Berechnungen, die behandelt werden müssen.

Alle anderen Lösungen oder Ideen werden geschätzt.

    
Krupal Shah 23.12.2016, 20:37
quelle

1 Antwort

26

Ich fand diese Antwort auf SO , die genau dasselbe horizontal machte. Answer bietet eine funktionierende Lösung, die LinearLayoutManager erweitert. Ich habe es ein wenig modifiziert, um auch vertikale Listen anzupassen, und es funktioniert. Wenn es einen Fehler bei der Implementierung gibt, lassen Sie es mich in Kommentaren wissen. Prost!

Benutzerdefinierter Layout-Manager:

%Vor%

Bei horizontaler Ausrichtung:

mit vertikaler Ausrichtung:

    
Krupal Shah 23.12.2016, 20:38
quelle