3

RecyclerViewミニフローティングアクションボタンを含むカードがいくつかあります。カードをクリックすると、カード上の画像とファブが共有要素遷移で使用されます。

リターン トランジションを実行すると、フローティング アクション ボタンが元の位置に「スナップ」して戻ります。

問題を示す gif を次に示します: https://gfycat.com/SnappySeparateDeer

アクティビティとトランジションを開始する私のコード:

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());

カードのミニ ファブ:

<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"/>

およびアクティビティ内のもの:

<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"/>

編集:報奨金を増やしたいのですが、何らかの理由で機能が SO に実装されていないようです。正解にバウンティ ポイントを追加できると確信しているので、さらに +50 を追加します。ありがとう!

4

2 に答える 2

0

以下で説明するように、ウィンドウとフラグメントの終了/開始遷移を維持してみてください。

<?xml version="1.0" encoding="utf-8"?>
<fade xmlns:android="http://schemas.android.com/apk/res/" android:duration="500"/>

また、共有要素の遷移は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
           android:duration="500"
           android:interpolator="@android:interpolator/decelerate_cubic">
    <changeBounds>
    <arcMotion
        android:maximumAngle="90"
        android:minimumHorizontalAngle="90"
        android:minimumVerticalAngle="0" />

    </changeBounds>
</transitionSet>

ImageView 以外に正しいトランジション効果があるかどうかはわかりません。前回作成したカスタムビューを試してみたところ、トランジションに入るときに同様の問題が発生しましたが、リターンは完璧でした。

于 2016-06-10T18:57:25.283 に答える