サンプルプログラムを書いてみました。
package jp.android.hellosurfaceview;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Color;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
public class HelloActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
HelloSurfaceView surface = new HelloSurfaceView(this);
setContentView(surface);
}
}
class HelloSurfaceView extends SurfaceView
implements SurfaceHolder.Callback, Runnable {
private SurfaceHolder holder;
private Thread mainLoop;
public HelloSurfaceView(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
holder.setFixedSize(getWidth(), getHeight());
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mainLoop = null;
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
mainLoop = new Thread(this);
mainLoop.start();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void run() {
while (mainLoop != null) {
Canvas canvas = holder.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(100, 100, 200, 200, paint);
holder.unlockCanvasAndPost(canvas);
}
}
}
いろいろググって参考にしましたが、
SurfaceViewを勉強するなら以下が勉強になると思います。
SurfaceViewならAndroidで高速描画ゲームが作れる
http://www.atmarkit.co.jp/fjava/rensai4/android12/android12_1.html
0 件のコメント:
コメントを投稿