Android Activity切り替えアニメーションの一般的な実装方法
4684 ワード
一.overridePendingTransition():
この方法では、別のactivityを起動し、activityを終了するときに呼び出すだけでいいです.この方法では、新しく起動したactivityが入ったときのアニメーションと、現在のactivityが消えたときのアニメーションの2つのパラメータを受信します.
開始:
終了:
二.ActivityOptionsCompat:
このクラスはsupportv 4に新しく追加されたクラスで、activityに様々なアニメーション効果を追加することができます.この中のapiは少なくとも4.0以上のシステムを要求し、一部は5.0以上を要求しています.グーグルは私たちのためにパッケージされたいくつかのストレッチ拡散アニメーション、共有要素アニメーションなど、簡単な効果の実現方法を紹介します.
開始:
終了:
注意:この終了方法は所望のアニメーション効果を達成することができず、第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
この方法では、別の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があるとします.
3.3、具体的なアニメーションファイルを定義する
ここでは、アニメーションファイルの実装について説明しません.
3.4、対応Activityへの適用
AndroidMenifest.xml