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
    <?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を利用してアニメーションを実現する場合、自身がインタフェースを提供してアニメーションの状態(開始、終了)を傍受するのではなく、自分で処理する必要があることです.