2

現在、アクティビティ A からアクティビティ B を起動するときにカスタムの共有要素トランジションを使用しています。すべてが完全に機能します。

Transitionアクティビティ B からアクティビティ A に戻る遷移に、共有要素を含まない別のカスタムを使用したいと考えています。ただし、いくつかの部分で問題が発生しています。

  1. 戻り遷移に共有要素が含まれていないことをフレームワークに伝えるにはどうすればよいですか?
  2. 戻り遷移における遷移の開始値と終了値は? Enter トランジションでは、アクティビティ A の上に描画されるアクティビティ B のビューをほとんど操作しました。リターントランジションでは何が起こりますか?

私が得ることができる助けに感謝します!

編集:

さらに調査したところ、createAnimatorを呼び出しているにもかかわらず、リターン トランジションが呼び出されていないことがわかりsetSharedElementReturnTransitionました。しかし、set 呼び出しが何かを行っていることはわかっています。これは、元の入力アニメーション (デフォルトの動作) を逆にしようとせず、2 つのビューをオーバーラップさせるだけではないためです。

編集#2:

ジョージ・マウントの答えを見た後、私は追加しました

@Override
public void captureStartValues(TransitionValues transitionValues) {
    transitionValues.view.setVisibility(View.VISIBLE);
}

@Override
public void captureEndValues(TransitionValues transitionValues) {
    transitionValues.view.setVisibility(View.INVISIBLE);
}

これによりcreateAnimator、アニメーションがまだ奇妙ですが、少なくともリターントランジションが実行されます。なぜ視認性が重要なのですか?

4

2 に答える 2

2

私は実際に、リターントランジションがcreateAnimator実行されない原因となっている原因を見つけました。どうやら、遷移フレームワークが、遷移中のビューの開始状態と終了状態が同じであると判断した場合、アニメーターは作成されません。したがって、いくつかのダミーの異なる値を に追加するcaptureStartStateと、captureEndState最終的にリターン遷移が適切に実行されました。

于 2015-10-07T18:48:58.050 に答える