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可以直接在线程中更新界面
}
}
}