You should use SurfaceView if there will be a limited number of sprites (~20 sprites). Otherwise, OpenGL is better for high-intensity graphics.
The SDK includes some game samples and I recommend that you start with those. The Lunar Lander example is especially good and is a complete, real-time game. It has a game loop, 2 threads (UI thread + drawing thread), and some basic game states. If this is your first time creating a game, I would also recommend that you learn some of the fundamentals of building a game, such as game loops. I'm sure you can find some good resources with a Google search. On Nov 1, 2:18 pm, klirr <[email protected]> wrote: > It is way to slow and in the first example it doesnt even move. How do > I make a game? With SurfaceView or OpenGL? And should I draw in a > separate thread? > > ---- > > package com.android.WWS; > > import android.app.Activity; > import android.content.Context; > import android.graphics.*; > import android.os.Bundle; > import android.view.SurfaceView; > import android.view.KeyEvent; > import android.view.View; > import android.view.View.OnKeyListener; > import java.lang.Runnable; > import java.lang.Thread; > > public class WWS extends Activity { > > @Override > protected void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > GameView gv = new GameView(this); > setContentView(gv); > gv.setOnKeyListener(new OnKeyListener() { > public boolean onKey(View v, int keyCode, KeyEvent event) > { > GameView gv = (GameView) v; > if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { > gv.decrY(3); > v.invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { > gv.decrX(3); > v.invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { > gv.incrY(3); > v.invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { > gv.incrX(3); > v.invalidate(); > } > return true; > } > }); > } > > private static class GameView extends SurfaceView { > private Paint mPaint = new Paint(); > private int x; > private int y; > > public GameView(Context context) { > super(context); > x = 135; > y = 303; > setWillNotDraw(false); > setFocusable(true); > requestFocus(); > } > > @Override > public void onDraw(Canvas canvas) { > Paint paint = mPaint; > canvas.translate(10, 10); > canvas.drawColor(Color.rgb(184,134,11)); > paint.setColor(Color.rgb(107,142,35)); > paint.setStrokeWidth(1); > canvas.drawRect(x, y, x+30, y+7, paint); > canvas.drawRect(x+10, y+7, x+20, y+27, paint); > canvas.drawRect(x+5, y+27, x+25, y+32, paint); > } > > public void decrY(int length) { > y -= length; > } > > public void incrY(int length) { > y += length; > } > > public void decrX(int length) { > x -= length; > } > > public void incrX(int length) { > x += length; > } > > } > > private static class GameRenderer implements Thread { > > public GameRenderer(GameView g) { > Thread t = new Thread(); > t.start(); > } > > public void run() { > while(!onPause && !onStop) { > > } > } > > } > > } > > -------------------- > > package com.android.WWS; > > import android.app.Activity; > import android.content.Context; > import android.graphics.*; > import android.os.Bundle; > import android.view.SurfaceView; > import android.view.KeyEvent; > import android.view.View; > import android.view.View.OnKeyListener; > > public class WWS extends Activity { > > @Override > protected void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > setContentView(new GameView(this)); > } > > private static class GameView extends SurfaceView implements > OnKeyListener { > private Paint mPaint = new Paint(); > private int x; > private int y; > > public GameView(Context context) { > super(context); > x = 135; > y = 303; > setWillNotDraw(false); > setFocusable(true); > requestFocus(); > } > > @Override > public void onDraw(Canvas canvas) { > Paint paint = mPaint; > canvas.translate(10, 10); > canvas.drawColor(Color.rgb(184,134,11)); > paint.setColor(Color.rgb(107,142,35)); > paint.setStrokeWidth(1); > canvas.drawRect(x, y, x+30, y+7, paint); > canvas.drawRect(x+10, y+7, x+20, y+27, paint); > canvas.drawRect(x+5, y+27, x+25, y+32, paint); > } > > public boolean onKey(View v, int keyCode, KeyEvent event) { > if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { > y -= 3; > invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { > x -= 3; > invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { > y += 3; > invalidate(); > } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { > x += 3; > invalidate(); > } > return true; > } > > } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

