2

バックグラウンド

特に Recyclerview エントリをクリックして詳細がフルスクリーン フラグメントに表示されたときに、「親から子へ」のナビゲーション トランジションを実装しようとしています。このようなもの:

親から子への例

質問

非常に多くのアニメーション API が利用できる中で、これを行うにはどうすればよいでしょうか? (TransitionManager.beginDelayedTransition、SharedTransition、setExitTransition など)

私が試したこと

  • InboxRecyclerView - これは、詳細ビューが Recyclerview と同じレイアウトにある場合にのみ機能するように見えることを除いて、私の要件に一致します。フラグメント バックスタックを使用してフラグメント間をナビゲートしているため、アタッチ前に使用できない可能性のあるレイアウト間を遷移する必要があります。

  • この投稿- 回答は、アクティビティからアクティビティへの遷移のみをカバーしています。フラグメントからフラグメントを探しています。

  • カスタム トランジション - Transition クラスを拡張しようとしましたが、問題が発生しました。CaptureStartValues() は、シーン全体から値をキャプチャするようです。recyclerview エントリからのみ値をキャプチャする必要があります。また、何らかの理由で、関数 createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) で null endValues を取得すると、終了値がキャプチャされません。

    TransitionSet exitTransition = new TransitionSet()
            .addTransition(new ChangeBounds())
            .addTransition(new ChangeTransform())
            .addTransition(new ChangeClipBounds())
            .addTransition(new ChangeImageTransform())
            .addTransition(new Expand())
            .setOrdering(TransitionSet.ORDERING_TOGETHER);
    TransitionSet enterTransition = new TransitionSet()
            .addTransition(new Fade());
    newFragment.setEnterTransition(enterTransition);
    oldFragment.setExitTransition(exitTransition);
    
4

1 に答える 1