9

Im Hinblick auf den normalen Lollipop-Übergang der Aktivität mit geteilten Elementen, z.B. https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition ist es üblich, dass man von einer Ansicht aus einer Recycler-Ansicht in eine normale Ansicht einer gezielten Aktivität übergeht.Shared Element Transition in eine Ansicht in einem RecyclerView, möglich?

Im Fall der gezielten Ansicht, gibt es jedoch auch in einem Viewholder eines RecyclerView, gibt es eine Möglichkeit, dies zu ermöglichen (d. H. Die Targeted View für die ActivityOptionsCompat bereitstellen)?

Danke!

+0

Feststellungen? Frage mich das Gleiche – Sunkas

Antwort

0

Nach meiner Untersuchung ist das nicht möglich. Bevor ein Übergang mit einem gemeinsam genutzten Element seine Animation erstellen kann, muss er zuerst den Start- und Endzustand jedes gemeinsamen Elements erfassen - nämlich seine Position, Größe und Darstellung in den aufrufenden und aufrufenden Aktivitäten/Fragmenten. Mit diesen Informationen kann der Übergang festlegen, wie die einzelnen Ansichten für gemeinsame Elemente animiert werden sollen. (Via http://www.androiddesignpatterns.com/2015/01/activity-fragment-shared-element-transitions-in-depth-part3a.html)

Offizielle Dokumentation erklärt Einschränkungen:

Klassen, die AdapterView, wie Listview erweitern, verwalten ihr Kind Ansichten in einer Weise, die mit den Übergängen Rahmen unvereinbar sind. Wenn Sie versuchen, eine Ansicht basierend auf AdapterView zu animieren, kann die Geräteanzeige hängen.

http://developer.android.com/training/transitions/overview.html#Limitations

4

Es ist durchaus möglich. Führen Sie dazu folgende Schritte aus:

  1. Verschieben Sie den Übergang in Ihrer Zielaktivität mit supportPostponeEnterTransition().
  2. Stellen Sie den Adapter auf RecyclerView ein.
  3. Starten Sie den verschobenen Übergang, nachdem RecyclerView die Elemente gezeichnet hat.

Schritt 3 arbeitet in der Regel mit diesem:

recyclerview.post(new Runnable() { 
      @Override 
      public void run() { 
       supportStartPostponedEnterTransition(); 
      } 
     }); 
Verwandte Themen