1

入力したフラグメントと既存のフラグメントの両方について、左のアニメーションに単純なスライドを実行すると、入力フラグメントが出口フラグメントとわずかに重なるようになります。これは、両方の移行が同時に実行されないと考えるようになります。この行動の手がかりや確認はありますか?フラグメントの入力と終了のトランジションは同時に実行されません

望ましい効果は、フラグメントを重ならずに同時に左にスライドさせることです。

コード:によって

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は、両方の断片が同時に左にスライドする効果を生成するために異なっていなければなりません。

答えて

0

効果は、遷移の予想される動作です。意図的にこのブロック効果が必要なので、トランジションのターゲットを追加することで解決します。このターゲットは、フラグメントのビューを含むFrameLayoutです。

fragment.setEnterTransition(new Slide(Gravity.RIGHT) 
        .addTarget(R.id.whole_content)); 
-1

アニメーションをトランザクション呼び出しで直接配置しようとしましたか?レイアウトのすべてのビューが、ブロックAは運動のいくつかの自然な感覚を作成し、すべてを移動回避するために、異なる時間に移動されるように

getSupportFragmentManager() 
.setCustomAnimations(R.transition.fragment_indicator_enter, R.transition.fragment_indicator_exit) 
.beginTransaction() 
.replace(R.id.fragment_container, fragment) 
.addToBackStack(null) 
.commit(); 
+0

私の場合はお勧めいただきありがとうございます。私はまったく同じものではないコンテンツの遷移(ロリポップapi)を使用したいです。私は、異なるターゲットビューに異なる効果を適用するカスタムトランジションを使用します。 – juanmeanwhile

関連する問題