3

アプリにカスタム共有要素トランジションを追加しようとしましたが、さまざまなアクティビティのさまざまなモードで動作するようにしました。しかし、私のテストでは、呼び出されたアクティビティの入力トランジションのみが実行されます。

これは、呼び出しアクティビティ A の私のコードです。

    TransitionSet set = new TransitionSet();
    set.setOrdering(TransitionSet.ORDERING_TOGETHER);
    set.addTransition(new ChangeBounds());
    PortalHeaderBackgroundTransition back = new PortalHeaderBackgroundTransition();
    back.setMode(0);
    set.addTransition(back);
    getWindow().setSharedElementEnterTransition(set);

    set = new TransitionSet();
    set.setOrdering(TransitionSet.ORDERING_TOGETHER);
    set.addTransition(new ChangeBounds());
    back = new PortalHeaderBackgroundTransition();
    back.setMode(1);
    set.addTransition(back);
    getWindow().setSharedElementExitTransition(set);

これは、呼び出されたアクティビティ B の私のコードです。

    TransitionSet set = new TransitionSet();
    set.setOrdering(TransitionSet.ORDERING_TOGETHER);
    set.addTransition(new ChangeBounds());
    PortalHeaderBackgroundTransition back = new PortalHeaderBackgroundTransition();
    back.setMode(2);
    set.addTransition(back);
    getWindow().setSharedElementEnterTransition(set);

    set = new TransitionSet();
    set.setOrdering(TransitionSet.ORDERING_TOGETHER);
    set.addTransition(new ChangeBounds());
    back = new PortalHeaderBackgroundTransition();
    back.setMode(3);
    set.addTransition(back);
    getWindow().setSharedElementExitTransition(set);

PortalHeaderBackgroundTransition にブレークポイントを追加します。A が B または B を呼び出して A に戻るたびに、モード 2 遷移のみが実行されます。

なぜこれが起こるのですか?そして、他のトランジションはいつ実行されますか?

4

1 に答える 1

4

activityAが activityを開始するBと、次のイベントが発生します。

  1. Aの exit 共有要素遷移が実行されます。
  2. Bの enter shared element トランジションが実行されます。

B戻るとA、次のイベントが発生します。

  1. Bの return 共有要素トランジションが実行されます (return トランジションが指定されていない場合は、B代わりに の enter shared element トランジションが使用されます)。
  2. Aの共有要素再入遷移が実行されます (再入遷移が指定されていない場合は、A代わりに の共有要素終了遷移が使用されます)。

したがって、あなたの質問に答えるために、Aの enter shared element トランジションは決して実行されません。これがアクティビティ トランジションの仕組みだからです。:)

于 2015-01-14T23:29:20.813 に答える