3

開始フラグメントと既存フラグメントの両方に対して単純なスライド アニメーションを左に実行すると、開始フラグメントが終了フラグメントとわずかにオーバーラップする効果が生成されます。これは、両方の遷移が同時に実行されていないと私に思わせます。この動作の手がかりや確認はありますか?

望ましい効果は、破片を重なり合うことなく同時に左にスライドさせることです。

コード:

Fragment current = ...;
Fragment fragment = ...;
Transition slideIn = TransitionInflater.from(this)
     .inflateTransition(R.transition.fragment_indicator_enter)
     .setDuration(300)
     .setInterpolator(new LinearInterpolator());
fragment.setEnterTransition(slideIn);

currentFragment.setExitTransition(TransitionInflater.from(this)
     .inflateTransition(R.transition.fragment_indicator_exit)
     .setDuration(300)
     .setInterpolator(new LinearInterpolator()));

getSupportFragmentManager()
     .beginTransaction()
     .replace(R.id.fragment_container, fragment)
     .addToBackStack(null)
     .commit();

既知の唯一の回避策は、入力トランジションに setStartDelay(30) を追加することです。しかし、奇妙なことに、フラグメントごとに異なる遷移があり、両方のフラグメントが同時に左にスライドする効果を生み出すには、startDelay を異なるものにする必要があります。

4

2 に答える 2

0

アニメーションをトランザクション呼び出しに直接配置しようとしましたか?

getSupportFragmentManager()
 .setCustomAnimations(R.transition.fragment_indicator_enter, R.transition.fragment_indicator_exit)
 .beginTransaction()
 .replace(R.id.fragment_container, fragment)
 .addToBackStack(null)
 .commit();
于 2016-05-09T10:11:03.137 に答える