Androidで動く携帯Javaアプリ作成入門
連載インデックスへ
Androidで動く携帯Javaアプリ作成入門(20)

Androidアプリで“アニメーション”するための基礎知識


株式会社イーフロー
緒方聡
2010/9/15

アニメーションに変化をもたらす「Interpolator」

- PR -

 これまで、基本的なAnimationを合成して、複雑なアニメーションを生成し、制御を行う方法を見てきました。

 その制御の1つに「Interpolator」の設定があります。Interpolatorを「Animation#setInterpolator(Interpolator)」メソッドで設定することによって、アニメーションの動作に変化を加えられます。

表7 用意されているInterpolator
クラス名 説明
AccelerateDecelerateInterpolator 加速と減速
AccelerateInterpolator 加速
AnticipateInterpolator 開始時に逆方向に溜める
AnticipateOvershootInterpolator 開始時に逆方向に溜め、終了時にはみ出す
BounceInterpolator 終了時にバウンド
CycleInterpolator 設定したアニメーションの負の方向も使用しながら繰り返す
DecelerateInterpolator 減速
LinearInterpolator 変化を加えない
OvershootInterpolator 終了時にはみ出す

 では、実際の動作を見てみてください。

 Interpolatorには、パラメータが用意されているものがあります。画面の上から4番目(数値の「5」が入力されている個所)がパラメータです。そこに実数を与えて動作を見てみてください。多くのパラメータは小さめの値を指定すると、自然な効果が得られますが、今回は変化が分かりやすいように大きめの値を設定しています。

アニメーションはXMLでリソース化できる

 これまで見たアニメーションは、すべてコーディングによるものでした。一方でアニメーションの定義ファイルをXMLであらかじめ用意しておき、それを実行時に読み込ませることも可能です。

 アニメーション定義XMLは「res/anim」フォルダに拡張子「.xml」で作成します。ADTのウィザードから作成しても、手動で生成しても構いません。

 アニメーション定義ファイルは、エディタによる支援が受けられないので、使用可能な要素や属性を把握しておかなければなりません。

使用可能な要素

 XMLのルート要素として、<alpha><rotate><scale><translate><set>が定義できます。それぞれ、すでに紹介したAlphaAnimationRotateAnimationScaleAnimationTranslateAnimationAnimationSetクラスに対応します。動作や設定項目はそれぞれのクラスに対応しています。<set>は、ほかの要素をネストできます。

共通属性

 すべての要素の共通属性は以下の通りです。

表8 共通属性
属性名 説明
xmlns:android "http://schemas.android.com/apk/res/android"を指定。ルート要素のみ必要
android:duration アニメーション時間をミリ秒で設定
android:fillAfter アニメーション後の状態を保つ
android:fillBefore アニメーション後に開始状態に戻す
android:fillEnabled fillBeforeとfillAfterの制御
android:interpolator Interpolatorを設定
android:repeatCount 繰り返し回数を設定
android:repeatMode 繰り返しモードを設定
android:startOffset 開始遅延時間を設定
android:zAdjustment Zオーダーを設定

 XMLから指定可能なInterpolatorはandroid.R.animに定義されています。具体的には、以下のような形式で指定します。

android:interpolator="@android:anim/accelerate_interpolator"

 それ以外の詳細については、Animationのオプションを参照してください。

個々の属性

 それぞれの要素の固有の属性は、以下の通りです。

表9 個々の属性
要素名 属性名 説明
<alpha> android:fromAlpha 開始透明度を指定
android:toAlpha 終了透明度を指定
<rotate> android:fromDegrees 開始角度を指定
android:toDegrees 終了角度を指定
android:pivotX 回転X軸を指定
android:pivotY 回転Y軸を指定
<scale> android:fromXScale 開始Xサイズを指定
android:toXScale 終了Xサイズを指定
android:fromYScale 開始Yサイズを指定
android:toYScale 終了Yサイズを指定
android:pivotX 原点X座標を指定
android:pivotY 原点Y座標を指定
<translate> android:fromXDelta 開始位置X座標を指定
android:toXDelta 終了位置X座標を指定
android:fromYDelta 開始位置Y座標を指定
android:toYDelta 終了位置Y座標を指定
<set> android:shareInterpolator Interpolatorを共有するかどうかを指定

リソースの読み込み

 XMLで用意しておいたリソースは、「AnimationUtils#loadAnimation()」メソッドで読み込みます。具体的な使用方法は、以下の通りです。

Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);

 今回用意したのサンプルには、すべての要素を使用したアニメーションXMLと、それを読み込むサンプルが含まれているので、動作と内容を確認してみてください。

アニメーションを使う際の3つの落とし穴

 アニメーションは、コーディングでもXMLでも比較的簡単に実現できることが理解できたでしょうか。

 最後に、筆者が気付いたアニメーションを使用する際の落とし穴を紹介して、今回は締めくくりたいと思います。

 次回は、アニメーションの応用でエフェクト効果を解説します。

落とし穴【1】キャンセル

 アニメーションのキャンセルは、キャンセル後にそのアニメーションの第1フレームが表示されたままの状態になってしまいます。この問題にどのように対処すればよいのかは分かっていませんが、「キャンセルしない」というのが最上策かもしれません。

落とし穴【2】イベント

 本稿では、ボタンをアニメーションさせました。アニメーション中、ボタンはいろいろな場所に移動しますが、「元の場所に引き続きボタンの実体は残っている」ということを考慮しなければなりません。

 つまり、「アニメーション開始時などで、ボタンのイベントを受け付けないようにする」などの対応が必要です。

落とし穴【3】親がフルスクリーンか

 アニメーションでは、自由に描画位置を移動できますが、親のオブジェクトがフルスクリーンではなかった場合、親の描画範囲外ではアニメーションは表示されません。

@IT関連記事


HTML+JavaScriptでiPhone/Androidアプリを作る
Web技術でネイティブアプリを作れるTitanium(1) 
iPad/iPhone VS Androidに戸惑っているWebデザイナ/開発者のためにオープンソースの開発ツールを紹介します
Androidアプリはビジネスになるのか
ものになるモノ、ならないモノ(38)
 「iPhoneアプリの次はAndroid?!」NECビッグローブのAndroidアプリ販売サイト「andronavi」を通して、その可能性に迫る
Master of IP Network」フォーラム 2010/2/12
Androidはオタクとオシャレのハイブリッドで流行る!
日本Androidの会 女子部に聞く 「女子部」の成り立ちや活動内容を中心に、Androidマーケットの問題点、UIデザインの重要性、ライバルであるiPhoneについて、など
今日から始める! Androidケータイアプリ作成の基礎
デザイナも知っておきたい「Androidアプリ」とは 日に日に国内でのニュースが増えているAndroidケータイ。その特徴を押さえてアプリ作成を始めるための基礎を紹介します
Androidアプリで高速描画チューニングをするコツ
インタビュー特集:Google直伝!(1) Googleのさまざまなサービスを使いこなすコツをグーグル担当者に聞くインタビュー。初回は日本で端末販売がせまるAndroidについて
リッチクライアント & 帳票」フ ォーラム 2009/4/21

ケータイ分野以外の組み込みデバイス開発の現場でも注目を集めている「Android」。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報・最新動向をお届けします!

1-2-3

 Index
第20回 Androidアプリで“アニメーション”するための基礎知識
  Page1
Androidはアニメーションを最初から重要視
Androidのアニメーションの4つの基本動作と合成
  Page2
Animationの代表的なオプション8つ
Page3
アニメーションに変化をもたらす「Interpolator」
アニメーションはXMLでリソース化できる
アニメーションを使う際の3つの落とし穴

Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»


ご意見、ご感想は Smart&Social 会議室へどうぞ


 Smart&Social フォーラム トップページへ


TechTargetジャパン

Smart & Social フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH