[Android] Android 4.1 で追加された Activity 起動アニメーション

| トラックバック(0) |

Android 4.1(Jelly Bean) から Activiy 起動アニメーションが簡単に指定できるようになりました。

 

Activity 起動アニメーション種類

  • スケールアップ(ScaleUpAnimation)
  • サムネイルスケールアップ(ThumbnailScaleUpAnimation)
  • カスタムアニメーション(CustomAnimation)

 

使い方

  1. ActivityOptions クラスの静的メソッド(makeXXX)を呼び出して同クラスをインスタンス化する。
  2. インスタンス化した 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>

 

  • カスタムアニメーションリソース(サンプル)・・・R.anim.zoom_exit
    • <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>
      

       

      あわせて読みたい

      トラックバック(0)

      トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/583

      2016年8月

        1 2 3 4 5 6
      7 8 9 10 11 12 13
      14 15 16 17 18 19 20
      21 22 23 24 25 26 27
      28 29 30 31