3

ユーザーが言語ロケールを変更すると、新しいロケールでアクティビティをリロードしたいと思います。アクティビティを終了して再度開始するときに、アニメーション化されたトランジションを作成したいと考えています。

遷移アニメーションは次のとおりです。

終了アニメーションは、アクティビティを画面の中央にスケーリングすることです。開始アニメーションは、画面の中心からアクティビティをスケーリングすることです。

finish();
overridePendingTransition(0, R.anim.scale_to_center);
Intent intent =new Intent(SettingsActivity.this, SettingsActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.scale_from_center, 0);

そして私scale_to_center.xmlは:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="1.0" android:toYScale="0"
        android:fromXScale="1.0" android:toXScale="0" 
        android:pivotX="50%" android:pivotY="50%"
        android:duration="500"/>
</set>

そして私scale_from_center.xmlは:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="0" android:toYScale="1.0"
        android:fromXScale="0" android:toXScale="1.0" 
        android:pivotX="50%" android:pivotY="50%"
        android:startOffset="500"
        android:duration="2000"/>
</set>

問題は、入力トランジションのみが表示され、終了トランジションが表示されないことです。終了トランジションに遅延を追加しようとしましたが、うまくいきませんでした。

ただし、アプリケーションの終了のみをアニメーション化するようにコードを変更したとき。出来た。

finish();
overridePendingTransition(0, R.anim.scale_to_center);

ありがとう。

4

2 に答える 2

0

ここでもうまくいきません。null_animation.xml を作成して修正しました。

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:toYDelta="0%p" />
于 2013-10-08T17:05:03.880 に答える