アニメーションを介してアクティビティの2つのフラグメントを交換したい場合、PageAはフラグメントAおよび画面の左側、PageBはフラグメントB、つまり画面の右側にあるとします。ここで、pageAのボタンをクリックすると、PageAが画面の右側に移動し、トランジションアニメーションが表示されるようにします。
私は位置を置き換えるために以下のコードを試しました
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();
いくつかの手がかりを探しています。
前もって感謝します。
古い質問とあなたはおそらくすでにそれを理解しましたが、将来の参考のために:
コードを使用してフラグメントを置き換えるときにカスタムアニメーションを設定するために使用するものは次のとおりです。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.fragment_container, newFragment, "fragment");
// Start the animated transition.
ft.commit();
以下は、slide_in_leftアニメーションの例です。
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromXDelta="-100%"
Android:toXDelta="0"
Android:interpolator="@Android:anim/decelerate_interpolator"
Android:duration="500"/>
</set>
互換性ライブラリを使用している場合、これはアニメーションであることに注意してください。その代わり、FragmentManagerをネイティブサポートするSDKを使用している場合、アニメーションは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:propertyName="x"
Android:valueType="floatType"
Android:valueFrom="-1280"
Android:valueTo="0"
Android:duration="500"/>
</set>
これは、互換性ライブラリが新しいobjectAnimatorタイプをサポートせず、代わりに古いアニメーションフレームワークのみを実装するためです。