Ich habe eine RecyclerView
mit einigen Karten, die jeweils einen Mini Floating Action Button enthalten. Wenn auf eine Karte geklickt wird, wird das Bild auf der Karte und der Fab in einem Übergang mit einem gemeinsamen Element verwendet.Geteilte Element Transition mit Floating Action Button Stochern
Wenn Sie den Rückkehrübergang ausführen, "schnappt" die schwebende Aktionsschaltfläche in ihre ursprüngliche Position zurück, anstatt sie so zu animieren, wie es eigentlich sein sollte.
Heres ein gif, der das Problem zeigt: https://gfycat.com/SnappySeparateDeer
Mein Code, um die Aktivität und den Übergang beginnen:
Intent intent = new Intent(mContext, PlayActivity.class);
Pair<View, String> p1 = Pair.create((View)holder.coverArt, "coverArt");
Pair<View, String> p2 = Pair.create((View) holder.fab, "fab");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(mActivity, p1, p2);
mContext.startActivity(intent, options.toBundle());
die Mini fab auf den Karten:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
app:fabSize="mini"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_anchor="@id/coverArt"
app:layout_anchorGravity="bottom|right|end"
android:src="@drawable/ic_favorite"
android:layout_margin="16dp"
android:clickable="true"
android:transitionName="fab"/>
und der in die Aktivität:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_anchor="@id/coverArt"
app:layout_anchorGravity="bottom|right|end"
android:src="@drawable/ic_favorite"
android:layout_margin="16dp"
android:clickable="true"
android:transitionName="fab"/>
EDIT: Ich möchte die Prämie erhöhen, aber es scheint, dass Feature in SO aus irgendeinem Grund nicht implementiert ist. Ich bin mir ziemlich sicher, dass ich zusätzliche Bounty-Punkte zur richtigen Antwort hinzufügen kann, also wird ein weiterer +50 hinzugefügt. Vielen Dank!
Was genau ist das Problem? –
@LukeSalamone Der Übergang wird vom System nicht richtig ausgerichtet. Wie Sie im Rücksprung sehen können, animiert die Fab wieder nach unten, aber sie schnappt nach links an ihre ursprüngliche Position anstatt an den üblichen fließenden Übergang. – Orbit
Haben Sie daran gedacht, 'overridePendingTransition()' zu verwenden? –