From 3ea9b7b394e3d8a6e9ae726d0de190b5bd938a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Wed, 18 Jan 2012 13:59:06 +0100 Subject: Add Game classes in android project. Add a SurfaceView and draw on it. --- .../src/main/java/com/orbekk/GameController.java | 5 ++ .../src/main/java/com/orbekk/GameView.java | 89 ++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 same-android/src/main/java/com/orbekk/GameController.java create mode 100644 same-android/src/main/java/com/orbekk/GameView.java (limited to 'same-android') diff --git a/same-android/src/main/java/com/orbekk/GameController.java b/same-android/src/main/java/com/orbekk/GameController.java new file mode 100644 index 0000000..01ad24d --- /dev/null +++ b/same-android/src/main/java/com/orbekk/GameController.java @@ -0,0 +1,5 @@ +package com.orbekk; + +public class GameController { + +} diff --git a/same-android/src/main/java/com/orbekk/GameView.java b/same-android/src/main/java/com/orbekk/GameView.java new file mode 100644 index 0000000..047955a --- /dev/null +++ b/same-android/src/main/java/com/orbekk/GameView.java @@ -0,0 +1,89 @@ +package com.orbekk; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.view.SurfaceHolder; +import android.view.SurfaceView; + +public class GameView extends SurfaceView implements SurfaceHolder.Callback { + private Logger logger = LoggerFactory.getLogger(getClass()); + private GameThread thread; + + static class GameThread extends Thread { + private int height = 0; + private int width = 0; + private int posX; + private int posY; + private SurfaceHolder holder; + private Context context; + private Paint paint; + + public GameThread(SurfaceHolder holder, Context context) { + this.holder = holder; + this.context = context; + paint = new Paint(); + paint.setAntiAlias(true); + paint.setARGB(255, 255, 0, 0); + } + + public void setSize(int width, int height) { + synchronized(holder) { + this.width = width; + this.height = height; + } + } + + private void doDraw(Canvas c) { + c.drawCircle(100.0f, 50.0f, 20.0f, paint); + } + + @Override public void run() { + Canvas c = null; + try { + c = holder.lockCanvas(); + synchronized(holder) { + doDraw(c); + } + } finally { + holder.unlockCanvasAndPost(c); + } + } + } + + public GameView(Context context) { + super(context); + getHolder().addCallback(this); + thread = new GameThread(getHolder(), context); + } + + @Override + protected void onDraw(Canvas canvas) { + Paint paint = new Paint(); + paint.setARGB(255, 255, 0, 0); + canvas.drawCircle(50.0f, 50.0f, 50.0f, paint); + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, + int height) { + logger.info("SurfaceChanged(w={}, h={})", width, height); + thread.setSize(width, height); + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + logger.info("SurfaceCreated()"); + thread.start(); + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + logger.info("SurfaceDestroyed()"); + // TODO: Stop thread. + } + +} -- cgit v1.2.3