1、写一个类继承View类,一般要重写ondraw方法。一般而言我们去自己绘制一个view,在另一个activity中setContentView(view)去引用它。

public class GameView extends View {

static int count = 0

static int y = 0

public GameView(Context context) {

super(context)

}

@Override

protected void onDraw(Canvas canvas) {

if (count<100) {

count++

}

else {

count = 0

}

Paint paint = new Paint()

switch (count%4) {

case 0:

paint.setColor(Color.BLUE)

break

case 1:

paint.setColor(Color.RED)

break

case 2:

paint.setColor(Color.GRAY)

break

case 3:

paint.setColor(Color.GREEN)

break

}

canvas.drawRect((320-80)/2, y, (320-80)/2+80, y+40, paint)

super.onDraw(canvas)

}

}

2

写一个activity。

public class ViewTestActivity extends Activity {

/** Called when the activity is first created. */

public static GameView gameView

public static Handler handler = new Handler(){

@Override

public void handleMessage(Message msg) {

if (msg.what ==11) {

}

super.handleMessage(msg)

}

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

gameView = new GameView(this)

setContentView(gameView)

new Thread(new GameThread()).start()

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

switch (keyCode) {

case KeyEvent.KEYCODE_DPAD_DOWN:

GameView.y+= 3

break

case KeyEvent.KEYCODE_DPAD_UP:

GameView.y-=3

break

}

return super.onKeyDown(keyCode, event)

}

@Override

public boolean onKeyUp(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

return true

}

@Override

public boolean onTouchEvent(MotionEvent event) {

// TODO Auto-generated method stub

return true

}

}

class GameThread implements Runnable{

@Override

public void run() {

while (!Thread.currentThread().isInterrupted()) {

try {

Thread.sleep(100)

} catch (InterruptedException e) {

e.printStackTrace()

Thread.currentThread().interrupt()

}

ViewTestActivity.gameView.postInvalidate()//使用postnvalidate可以直接在线程中更新界面

}

}

}