0

この画像を参照してください。

https://lh4.googleusercontent.com/-gEW9RFcjpnQ/UTKSd0DSR5I/AAAAAAAALs/P7i47evr2uY/s503/transitions.png

1- アプリケーションが開始されると、アクティビティを通じてスプラッシュスクリーンが表示されます

2- 次に、実行がメイン アクティビティに移動します (スプラッシュ スクリーン アクティビティが終了します)。

3- ユーザーは、ボタンをクリックして、画面 1 または画面 2 のアクティビティに移動できます。

3.1- その際、メイン アクティビティは保持され (終了していません)、必要な画面アクティビティが作成されます。

4- screen-2 または screen-2 のアクティビティから戻るには、それらを終了するだけです。その後、実行はデフォルトでメイン アクティビティに戻ります。

私が欲しいのは:

1- 写真の (A) のデフォルト遷移アニメーション。Splash から Main Activity へ、Main Activity から screen-1 へ、screen-1 が終了したとき (Main Activity に戻るとき) のデフォルト アニメーションを意味します。

2- 写真の (B) の特定のトランジション アニメーション。メイン アクティビティから画面 2 に移動するときと、画面 2 が終了するとき (メイン アクティビティに戻るとき) を意味します。

こことインターネットで検索した限り、これを達成する方法は見つかりませんでした。

これはどのように行うことができますか?

Main Activity->screen-1 と Main Activity->screen-2 で異なるアニメーションにすることには成功しましたが、screen-1->Main Activity と screen-2->Main Activity で異なるアニメーションにすることはまったくできません。

ご助力ありがとうございます!

4

1 に答える 1

3

次のコードを使用して、画面 2 のアクティビティを開始します。

startActivityForResult(intent4Screen2, RESULT_ANIMATION);
overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

onActivityResult() に次のように入力します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case RESULT_ANIMATION:
            overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
            break;
    }
}

RESULT_ANIMATION は定数で、 zoom_enter と zoom_exit は次のようなアニメーションです。

<set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/decelerate_interpolator">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

overridePendingTransition() メソッドをサポートしていない Android <2.0 をサポートする必要がある場合は、リフレクションを使用する必要があります。

于 2013-03-03T02:31:33.120 に答える