1. ホーム
  2. アンドロイド

[解決済み】Android Fragmentとアニメーション

2022-04-01 20:26:14

質問

例えばハニカムのGmailクライアントが使っているようなスライディングは、どのように実装すればいいのでしょうか?

できること TransactionManager エミュレータがスライドショーであるため、これをテストするのはちょっと難しいのですが、フラグメントを追加したり削除することで自動的に処理します :)

解決方法は?

フラグメント間の遷移や、フラグメントの表示・非表示をアニメーションで表現する場合は Fragment Manager を作成し Fragment Transaction .

各Fragment Transactionの中で、表示と非表示にそれぞれ使用するインとアウトのアニメーションを指定することができます(replaceを使用する場合は両方)。

次のコードは、1 つのフラグメントをスライドさせて取り除き、代わりにもう 1 つのフラグメントをスライドさせることで、フラグメントを交換する方法を示しています。

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = DetailsFragment.newInstance();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();

フラグメントを隠したり表示したりするのと同じことを行うには、単に ft.show または ft.hide で、それぞれ表示・非表示にしたいフラグメントを渡します。

参考までに、XMLのアニメーション定義には objectAnimator タグを使用します。slide_in_leftの例は、次のようなものである。

<?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>