「アニメーション」機能は、Androidが提供するそのほかの機能に比べると、実用度は低いように感じられますが、実はバージョン1.0よりも以前からアニメーションはAPIとして開発者に提供されています。
その後、追加された機能に優先して、アニメーションが初めから用意されているのは、なぜでしょうか。
それは、「Androidにとってアニメーション機能は重要であるから」にほかなりません。
よくAndroidと比較されるiPhone/iPadは、素晴らしいアニメーションのエフェクトを持つGUIが備わっています。「いまどきのスマートフォンやモバイルデバイスは、カッコいいエフェクトが備わっていないとエンドユーザーに選ばれない」ということかもしれません。
Androidはシステム全体を通してアニメーションが駆使できるように設計されています。「メニューを開く」「アクティビティを起動する」「ダイアログを表示する」というような基本的な動作にもアニメーションが使用されています。
アクティビティの切り替え時や、ダイアログ表示時のアニメーションは次回解説します。今回は、GUIコンポーネントに対するアニメーションを見ていきましょう。
以下のリンクより、今回のサンプルアプリケーションをダウンロードしておいてください。
Androidのアニメーションは、「android.view.animation」パッケージで実現します。このパッケージには、Animationクラスと、そのサブクラスが用意されています。
クラス名 | 概要 |
---|---|
Animation | すべてのアニメーションの基底の抽象クラス |
AlphaAnimation | フェイドイン/アウト |
RotateAnimation | 回転 |
ScaleAnimation | 拡大・縮小 |
TranslateAnimation | 移動 |
AnimationSet | 複数のアニメーションを合成 |
表1 アニメーション一覧 |
それでは、1つずつ見ていきましょう。
アニメーション開始時とアニメーション終了時の透明度を設定して、フェイドイン/フェイドアウトを表現します。
「AlphaAnimation」機能のみ、ソースコードと画面キャプチャを掲示しておきます。それ以外は、サンプルをダウンロードして中身をご覧ください。
package com.example.android.animation; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.animation.AlphaAnimation; import android.widget.EditText; public class AlphaAnimationExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.alpha_animation_example); } public void onClick(View v) { float fromAlpha = Float.parseFloat(((EditText)findViewById(R.id.fromAlpha)).getText().toString()); float toAlpha = Float.parseFloat(((EditText)findViewById(R.id.toAlpha)).getText().toString()); AlphaAnimation animation = new AlphaAnimation(fromAlpha, toAlpha); animation.setDuration(3000); v.startAnimation(animation); } }
ほかのサンプルのソースコードも同じ構造です。
今回のサンプルアプリのアニメーション確認画面は、すべてこのようなレイアウトです。左側に並んでいる入力コンポーネントは、各Animationクラスのコンストラクタに渡す引数です。AlphaAnimationは開始透明度と終了透明度を指定可能で、図1は不透明から、90%透明にアニメーションします。
コンストラクタ引数 | 説明 |
---|---|
float fromAlpha | アニメーション開始時の透明度を0.0〜1.0の間で指定。0.0は完全透明、1.0は完全不透明 |
float toAlpha | アニメーション終了時の透明度を0.0〜1.0の間で指定。0.0は完全透明、1.0は完全不透明 |
表2 AlphaAnimationのコンストラクタ |
すべてのAnimationクラスには複数のコンストラクタが用意されています。ここではコーディングレベルで使用する、最も引数の多い(ほかのオーバーロードコンストラクタを包含する)コンストラクタについて説明します。
Copyright © ITmedia, Inc. All Rights Reserved.