1. ホーム
  2. android

[解決済み] Android - フラグメントトランザクションでカスタムアニメーションが実行されない

2023-05-25 12:31:03

質問

Google API 8 (Android 2.2) をサポートパッケージ v4 と共に使用しています。

エラーやアニメーションは出ません。

トランザクションが発生します。

FragmentTransaction transaction = manager.beginTransaction();       
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();

アニメーションです。

スライド_イン_レフト.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="700"
        android:fromXDelta="-100%"
        android:toXDelta="0%" >
    </translate>
</set>

スライドアウト_右.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="700"
        android:fromXDelta="0%"
        android:toXDelta="100%" >
    </translate>
</set>

ここで何が起こっているのか、誰か知っていますか?

どのように解決するのですか?

マネージャは私がアニメーションを設定する前に私のトランザクションをスタックしていたので、アニメーションなしでトランザクションをスタックします(悲しいことですが事実です)。 setCustomAnimations() .

解決策は、アニメーションを先に設定することです。

FragmentTransaction transaction = manager.beginTransaction();       
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();