Android 4.1(Jelly Bean) から Activiy 起動アニメーションが簡単に指定できるようになりました。
Activity 起動アニメーション種類
- スケールアップ(ScaleUpAnimation)
- サムネイルスケールアップ(ThumbnailScaleUpAnimation)
- カスタムアニメーション(CustomAnimation)
使い方
- ActivityOptions クラスの静的メソッド(makeXXX)を呼び出して同クラスをインスタンス化する。
- インスタンス化した ActivityOptions を、startActivity の引数に渡す。
以下、それぞれのアニメーションの解説です。
スケールアップ(ScaleUpAnimation)
画面上の指定された開始位置から、新しいアクティビティを拡大するアニメーション。
- ソースコード
// アニメーションの基点となるビュー
Button view = (Button) findViewById(R.id.button);
// スケールアップ用 ActivityOptions をインスタンス化
ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(
view,
0, 0, view.getWidth(), view.getHeight());
// アニメーションを指定してアクティビティを起動
startActivity(
new Intent(this, SecondActivity.class),
opts.toBundle());
サムネイルスケールアップ(ThumbnailScaleUpAnimation)
指定したサムネイル(Bitmap)を指定した位置から、新しいアクティビティを拡大するアニメーション。
- ソースコード
// アニメーションの基点となるビュー
Button view = (Button) findViewById(R.id.button);
// ここではサンプルとしてスケールアップするアニメーションの画像に
// ボタンの画像(Bitmap)を使用していますが、任意の画像を使用することができます。
view.setDrawingCacheEnabled(true); // 後で元に戻すこと
view.setPressed(false);
view.refreshDrawableState();
Bitmap bitmap = view.getDrawingCache();
// サムネイルスケールアップ用 ActivityOptions をインスタンス化
ActivityOptions opts = ActivityOptions.makeThumbnailScaleUpAnimation(
view,
bitmap, 0, 0);
// アニメーションを指定してアクティビティを起動
startActivity(
new Intent(this, SecondActivity.class),
opts.toBundle());
view.setDrawingCacheEnabled(false);
カスタムアニメーション(CustomAnimation)
カスタムアニメーション(リソース)を指定して、新しいアクティビティを拡大するアニメーション。
- ソースコード
// カスタムアニメーション用 ActivityOptions をインスタンス化
ActivityOptions opts = ActivityOptions.makeCustomAnimation(
MainActivity.this,
R.anim.zoom_enter, R.anim.zoom_exit);
// アニメーションを指定してアクティビティを起動
startActivity(
new Intent(this, SecondActivity.class),
opts.toBundle());
- カスタムアニメーションリソース(サンプル)・・・R.anim.zoom_enter
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >
<scale
android:duration="@android:integer/config_mediumAnimTime"
android:fromXScale="2.0"
android:fromYScale="2.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" >
<scale
android:duration="@android:integer/config_mediumAnimTime"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale=".5"
android:toYScale=".5" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0" />
</set>
あわせて読みたい
