Androidアプリ作成講座 10-Animationクラスを使う

2018年8月22日

ここまでの講座で、円の描画までプログラムが完成しました。講座としてやりたいことは終わりましたが、円を移動するという、おまけの処理について考えて行きたいと思います。

1.Animationクラスを使う

円を移動する処理は、パラパラアニメで移動することにします。あくまでも簡易的なもので、ちらつきも発生する簡単なものです。

Androidには、Animationクラスという便利なクラスがあります。Animationクラスは、秒数を指定すると描画に適したタイミングを通知してくれる便利なクラスです。描画のタイミングが通知される時に、指定した秒数の経過時間も通知されるので、その経過時間に応じた画像を描画すれば良いことになります。

通知のタイミングは、Androidがデバイスに応じて適切に計算するので、デバイスの性能をプログラマは意識する必要がありません。

プログラムでは、Animationクラスの派生クラスを作成します。

2.Animationクラスの実装

Animationクラスの派生クラスを作ります。「java class」で追加しましょう。完全なソースは次の投稿で載せることとして、今回は要所だけを説明します。

Animationクラスの派生クラス「CircleAnimation」を作ります。

public class CircleAnimation extends Animation {

    private MySurfaceView myView_ins ;

    public CircleAnimation(MySurfaceView myView) {
        myView_ins = myView ;
    }

    // 描画処理
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation transformation) {

        myView_ins.myDraw();	// SurfaceViewの描画関数を呼び出す
    }
}

extendsでAnimationクラスの派生クラスであることを記述します。
コンストラクタでは、SurfaceViewのインスタンスを受け取っています。

そして描画のタイミングでapplyTransformation関数が呼ばれます。

interpolatedTimeで、経過割合が通知されます。0.0~1.0fまでの値で経過時間が通知されますので、それに合わせた描画をすれば良いことになります。 myView_ins.myDraw()でSurfaceViewの描画を行っています。

※描画の計算は、ここでは記述していません。

3.呼び出し元の記述

呼び出し元でCircleAnimationクラスのインスタンスを作成して、アニメーションの秒数を指定します。

private CircleAnimation circleAnimation ;

circleAnimation = new CircleAnimation(this) ; // SurfaceViewクラスで作成する

circleAnimation.setDuration((long)10000) ; // 10秒間のアニメーションを行う

this.startAnimation(circleAnimation); // アニメーションの開始

これで、呼び出し元のアニメーションの処理が完成です。

10秒かけて、円を上から下まで移動させます。描画して消してを繰り返して処理するので、ちらつきます。これはあくまでもテストなので、本来の処理方法ではないことをご了承ください。

4.最後に

これで、講座は全て完了です。Androidプログラムのイメージは掴めましたでしょうか。やっぱり難しいと感じた人も多いかもしれません。

当ホームページのプログラム講座の中にある「プログラムの話」で、プログラミングの始め方を紹介しています。(まだ作成途中です)プログラムを趣味で始めたい人は、参考にしてみてください。

今回のアニメーションのソースは、次の投稿で載せます。

(LIST)Androidアプリ作成講座

Androidアプリ作成講座 プロローグ
Androidアプリ作成講座 1-プロジェクトを作る
Androidアプリ作成講座 2-プロジェクトを確認する
Androidアプリ作成講座 3-エミュレーター環境を作る
Androidアプリ作成講座 4-SurfaceViewクラスを作成する
Androidアプリ作成講座 5-SurfaceViewをActivityにセットする
Androidアプリ作成講座 6-SurfaceViewがイベントを受け取れるようにする
Androidアプリ作成講座 7-キャンバス上で描画する
Androidアプリ作成講座 8-円を描画する
Androidアプリ作成講座 9-デバッガを使ってみよう
Androidアプリ作成講座 10-Animationクラスを使う
Androidアプリ作成講座 11-円移動のソース