Android Activity切り替えアニメーションの一般的な実装方法

4684 ワード

一.overridePendingTransition():
この方法では、別のactivityを起動し、activityを終了するときに呼び出すだけでいいです.この方法では、新しく起動したactivityが入ったときのアニメーションと、現在のactivityが消えたときのアニメーションの2つのパラメータを受信します.
開始:
startActivity(newIntent(MainActivity.this,TestActivityWithTheme.class));
overridePendingTransition(R.anim.open_in, R.anim.open_out);

終了:
 @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.close_in, R.anim.close_out);
    }

二.ActivityOptionsCompat:
このクラスはsupportv 4に新しく追加されたクラスで、activityに様々なアニメーション効果を追加することができます.この中のapiは少なくとも4.0以上のシステムを要求し、一部は5.0以上を要求しています.グーグルは私たちのためにパッケージされたいくつかのストレッチ拡散アニメーション、共有要素アニメーションなど、簡単な効果の実現方法を紹介します.
開始:
ActivityOptionsCompat compat = ActivityOptionsCompat.makeCustomAnimation(MainActivity.this, R.anim.open_in, R.anim.open_out);
ActivityCompat.startActivity(MainActivity.this,intent, compat.toBundle());

終了:
Override
public void onBackPressed() {
    super.onBackPressed();
    ActivityCompat.finishAfterTransition(this);
}

注意:この終了方法は所望のアニメーション効果を達成することができず、第1の方法でoverridePendingTransition(R.anim.close_in,R.anim.close_out)の終了を実現する必要がある.
三.AppTheme:トピックでactivityアニメーションスタイルを直接変更するには:
AndroidManifestでxmlファイルでは、Android:themeプロパティでActivityのトピックを設定します.トピックではActivityの切り替えアニメーションを定義できます.Activityを適用してアニメーションを切り替える方法です.以下では、Activity間の切り替えアニメーションをテーマで設定します.
3.1、アニメーションを含むActivityテーマを定義する
res/values/styles.xml


WindowAnimationStyleという属性を使って、アニメーションを切り替えるstyleを指定すればいいのです.
3.2、切り替えアニメーションstyleの定義
res/values/styles.xml


この4つの属性の意味を具体的に説明します.AとBの2つのActivityがあるとします.
  • AがBを起動するとAが画面から消え、このときAのandroid:activityOpenExitAnimation
  • が実行する.
  • AがBを起動すると、Bが画面に表示され、Bのandroid:activityOpenEnterAnimation
  • が実行する.
  • BからAに戻るとBが画面から消え、Bのandroid:activityCloseExitAnimation
  • が実行する.
  • BからAが戻るとAが画面に表示され、Aのandroid:activityCloseEnterAnimation
  • が実行する.
    3.3、具体的なアニメーションファイルを定義する
  • res/anmi/res/top_to_bottom_in.xml
  • res/anmi/res/top_to_bottom_out.xml
  • res/anmi/res/bottom_to_top_in.xml
  • res/anmi/res/bottom_to_top_out.xml

  • ここでは、アニメーションファイルの実装について説明しません.
    3.4、対応Activityへの適用
    AndroidMenifest.xml