HTC Sense 3.5(カスタムROM、Endymion V3.5、ICSの前にOSでテストできるように)でAndroid 2.3.5を実行しているHTC Desireで正常に動作する2つのカスタムアニメーションを宣言しました。新しいアクティビティを開くと新しい画面が右からスライドインし、現在のアクティビティを閉じると新しい画面が左からスライドインするので、問題ありません。私が持っているコードは次のとおりです。
overridePendingTransition(com.my.app.R.anim.slidein, com.my.app.R.anim.slideout);
アニメーションを宣言する xml は次のとおりです。
スライドイン.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
スライドアウト.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
しかし、ここで問題が発生します。
同じ apk は、Nexus4 で部分的に機能します。新しいアクティビティを開くと、正しく機能し、新しい画面が右からスライドインします。現在のアクティビティを閉じると、前の画面がデフォルトのアニメーションで表示され、カスタム アニメーションは無視されます。Nexus4にAndroid 4.3を搭載した非公式CM 10.2があります。
私の質問は次のとおりです。Android 4.3でこのように動作するはずですか? おそらく新しい API レベルでは、これを正しく行うために呼び出す必要がある別のメソッドがありますか? どんな助けでも大歓迎です!
乾杯
編集:カスタム終了アニメーションを個別に宣言し、提案されたソリューションと組み合わせて、期待どおりに機能するようになりました。
closeslidein.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
closeslideout.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
そして仕上げ工程:
@Override
public void finish()
{
super.finish();
overridePendingTransition(com.my.app.R.anim.closeslidein, com.my.app.R.anim.closeslideout);
}