AndroidではActivityを起動する際、ズームや独自にカスタムしたアニメーションを付加して起動することができます。
- Activityにアニメーションを付与する(TranslateAnimation)
Android 4.1では、Activity起動時に実行したいアニメーションを指定する場合に、ActivityOptions APIを使用することでstartActivityのようなActivityを起動するためのメソッドを利用してアニメーションを付加することができます。
ActivityOptionsクラスは、Activityを起動するときに表示したいアニメーションのタイプによって、次のようなメソッドが用意されています。
[table “262” not found /]
続きで実装方法を見てみましょう。
スケールアップアニメーションでActivityを起動する
今回は先ほどの表にて紹介したmakeScaleUpAnimation()メソッドを利用したサンプルを紹介します。
以下のはサンプルの画面遷移の様子です。1枚目は遷移前、3枚目は遷移後です。遷移途中の2枚目の画像に、うっすらスケールアニメーション中のActivityが見えているのがわかると思います。
ソースコードは以下の通りです。
■MainActivity.java
public class MainActivity extends Activity { Intent intent; ActivityOptions mActivityOptions; @TargetApi(16) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = new Intent(this,AnimationActivity.class); Button button = (Button)findViewById(R.id.button1); mActivityOptions = ActivityOptions.makeScaleUpAnimation(button,0,0,button.getWidth(),button.getHeight()); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { Bundle bundle = mActivityOptions.toBundle(); startActivity(intent,bundle); } }); } }
14行目でmakeScaleUpAnimation()メソッドを使用しています。makeScaleUpAnimation()を含む冒頭の表に示した3つの各メソッドは、ActivityOptionsクラスのインスタンスを返します。
makeScaleUpAnimation()メソッドの各引数は以下の通りです。
[table “263” not found /]
19行目でtoBundle()メソッドを用いて、生成したActivityOptionsクラスのインスタンスからBundleを生成しています。
生成したBundleを、startActivity()メソッドの第2引数に指定すると、次のActivityが前出の図のようにスケールアニメーションで起動します。
なお、アニメーション後のサイズは画面サイズとなります。