2012年2月16日木曜日

Androidで簡易アニメーション


OpenGLやSurfaceViewを使わずに、簡単にアニメーションさせるにはTranslateAnimationやRotateAnimationを使います。
ここから下はサンプルソースです。


package com.sample.animation;//ここは各自変更して下さい

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.animation.RotateAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class AnimationTestActivity extends Activity {//ここも各自変更して下さい
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     
        //背景になる緑色のレイアウト
        LinearLayout greenLinearLayout = new LinearLayout(this);
        //緑色に設定
        greenLinearLayout.setBackgroundColor(Color.GREEN);
     

        //平行移動するレイアウト
        LinearLayout redLinearLayout = new LinearLayout(this);
        //赤色に設定
        redLinearLayout.setBackgroundColor(Color.RED);
        //横幅、縦幅
        redLinearLayout.setLayoutParams(new LayoutParams(300, 300));


        //アニメーションを設定
        TranslateAnimation redAnimation =
            new TranslateAnimation(100, 100, 0, 330);//x始点、x終点、y始点、y終点
        //アニメーションする時間 4000ミリ秒 = 4秒間アニメーションする
        redAnimation.setDuration(4000);
        //レイアウトにアニメーションを設定
        redLinearLayout.setAnimation(redAnimation);

     
        //回転するビュー
        TextView blueView = new TextView(this);
        //横幅、縦幅
        blueView.setLayoutParams(new LayoutParams(150, 150));
        //青色に設定
        blueView.setBackgroundColor(Color.BLUE);
        blueView.setText("回転移動");
     
        //開始角度、終了角度、中心点x、中心点y
        RotateAnimation blueAnimation = new RotateAnimation(0, 360, 150, 150);
        //アニメーションする時間 4000ミリ秒 = 4秒間アニメーションする
        blueAnimation.setDuration(4000);
        //ビューにアニメーションを設定
        blueView.setAnimation(blueAnimation);

        //ビューの親子関係を設定。
        //アクティビティに親の緑色レイアウトを設定
        setContentView(greenLinearLayout);
        //緑色レイアウトに子の赤色レイアウトを設定
        greenLinearLayout.addView(redLinearLayout);
        //赤色レイアウトに孫青色ビューを設定
        redLinearLayout.addView(blueView);
    }
}




2 件のコメント:

  1. 自分はSurfaceViewばかり使ってますから
    レイアウトを使ったプログラムは参考になりますね。

    返信削除
  2. 仕事でSurfaceViewを使わないアニメーションを作ることがあったので、載せてみました。ひとくくりにアニメーションといっても色々なやり方がありますね。

    返信削除