androidアニメーションの概要
3055 ワード
Androidのアニメーションは3つに分けられます. Tween Animation:シーン内のオブジェクトを絶えず画像変換(平行移動、スケール、回転)することでアニメーション効果を生成します.すなわち、グラデーションアニメーションです. Frame Animation:事前に作成した画像を順番に再生し、画面変換アニメーションです. Property Animation:プロパティアニメーション、オブジェクトのプロパティを動的に変更することによってアニメーション効果を達成し、プロパティアニメーションはAPI 11の新しいプロパティである.
以下では、前の2つのアニメーションの使用方法について説明します.プロパティアニメーションは後述します.
Tween Animation
Tween Animationには4つの形式があります.
l alphaグラデーション透明度アニメーション効果
l scaleグラデーション寸法伸縮アニメーション効果
l translate画面位置移動アニメーション効果
l rotate画面回転アニメーション効果
これらの4つのアニメーション実装方式は,いずれもAnimationクラスとAnimationUtilsの連携により実現される.
xmlで実装できます:アニメーションのXMLファイルは、プロジェクト内のres/animディレクトリにあります.
例:rotate.xml
アニメーションの使用
二Frame Animation
Frame Animationは、事前に作成した画像を順番に再生し、映画と似ています.Android SDKは、animationDrawableとは異なり、Frame Animationの使用を定義する別のクラスAnimationDrawableを提供しています.
アニメーションの使用
ここで少し違うのは、AnimationDrawableを利用してアニメーションを実現する場合、自身がインタフェースを提供してアニメーションの状態(開始、終了)を傍受するのではなく、自分で処理する必要があることです.
以下では、前の2つのアニメーションの使用方法について説明します.プロパティアニメーションは後述します.
Tween Animation
Tween Animationには4つの形式があります.
l alphaグラデーション透明度アニメーション効果
l scaleグラデーション寸法伸縮アニメーション効果
l translate画面位置移動アニメーション効果
l rotate画面回転アニメーション効果
これらの4つのアニメーション実装方式は,いずれもAnimationクラスとAnimationUtilsの連携により実現される.
xmlで実装できます:アニメーションのXMLファイルは、プロジェクト内のres/animディレクトリにあります.
例:rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter = "false"
android:zAdjustment="bottom"
>
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="4000"
/>
</set>
アニメーションの使用
Animation anim = AnimationUtils.loadAnimation(mContext, R.anim.rotate);
// ( , )
anim.setAnimationListener(new EffectAnimationListener());
textWidget = (TextView)findViewById(R.id.text_widget);
textWidget.setText(" ");
textWidget.startAnimation(anim);
二Frame Animation
Frame Animationは、事前に作成した画像を順番に再生し、映画と似ています.Android SDKは、animationDrawableとは異なり、Frame Animationの使用を定義する別のクラスAnimationDrawableを提供しています.
xml :res/drawable-hdpi/frame.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
>
<item android:drawable="@drawable/p1" android:duration="1000"></item>
<item android:drawable="@drawable/p2" android:duration="1000"></item>
<item android:drawable="@drawable/p3" android:duration="1000"></item>
<item android:drawable="@drawable/p4" android:duration="1000"></item>
<item android:drawable="@drawable/p5" android:duration="1000"></item>
<item android:drawable="@drawable/p6" android:duration="1000"></item>
</animation-list>
アニメーションの使用
AnimationDrawable anim = (AnimationDrawable)getResources().
getDrawable(R.drawable.frame);
textWidget = (TextView)findViewById(R.id.text_widget);
textWidget.setText(" ");
textWidget.setBackgroundDrawable(anim);
anim.start();
ここで少し違うのは、AnimationDrawableを利用してアニメーションを実現する場合、自身がインタフェースを提供してアニメーションの状態(開始、終了)を傍受するのではなく、自分で処理する必要があることです.