Android 模拟小球来回撞墙效果(游戏的开始)
Android 模拟小球来回撞墙效果(游戏的开始)
Android 模拟小球来回撞墙效果代码:
- package com.ball;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Window;
- import android.view.WindowManager;
- public class MainActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags( //设置为全屏模式
- WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(new BallView(this));
- }
- }
- package com.ball;
- import android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Canvas;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- public class BallView extends SurfaceView implements SurfaceHolder.Callback {
- Bitmap bitmapBall = null;
- Movable movable = null;
- DrawThread dt;
- Bitmap bmpBack;
- public BallView(Context context) {
- super(context);
- getHolder().addCallback(this);
- initBitmaps(getResources());
- initMovable();
- dt = new DrawThread(this,getHolder());
- }
- public void initBitmaps(Resources r) {
- bitmapBall = BitmapFactory.decodeResource(r, R.drawable.icon);
- }
- public void initMovable() {
- movable = new Movable(0,0,
- 0, bitmapBall);
- }
- public void doDraw(Canvas canvas) {
- int color = getResources().getColor(android.R.color.white);
- canvas.drawColor(color);
- movable.drawSelf(canvas);
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- if(!dt.isAlive()) {
- dt.start();
- }
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- dt.flag = false;
- dt = null;
- }
- }
- package com.ball;
- import android.graphics.Canvas;
- import android.view.SurfaceHolder;
- public class DrawThread extends Thread {
- boolean flag = false;
- BallView ballView;
- SurfaceHolder surfaceHolder;
- int sleepSpan = 30;
- public DrawThread(BallView ballView, SurfaceHolder surfaceHolder) {
- this.ballView = ballView;
- this.surfaceHolder = surfaceHolder;
- this.flag = true;
- }
- public void run() {
- Canvas canvas = null;
- while(flag) {
- try {
- canvas = surfaceHolder.lockCanvas(null);
- synchronized(surfaceHolder) {
- ballView.doDraw(canvas);
- }
- } catch(Exception e) {
- e.printStackTrace();
- } finally {
- if(canvas != null) {
- surfaceHolder.unlockCanvasAndPost(canvas);
- }
- }
- try{
- Thread.sleep(sleepSpan);
- }
- catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- }
评论暂时关闭