1.先定义好组件
package com.test;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class GameView extends View {
int miCount = 0;
int y = 0;
public GameView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
//绘制自定义的组件
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
if(miCount<100)
{
miCount++;
}
else
{
miCount=0;
}
Paint mPaint = new Paint();
switch(miCount%4)
{
case 0:
mPaint.setColor(Color.BLUE);
break;
case 1:
mPaint.setColor(Color.RED);
break;
case 2:
mPaint.setColor(Color.GREEN);
break;
case 3:
mPaint.setColor(Color.YELLOW);
break;
default:
mPaint.setColor(Color.WHITE);
break;
}
//绘制矩形
canvas.drawRect((320-80)/2,y,(320-80)/2+80,y+40,mPaint);
}
}
2.使用组件
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
public class Test0907 extends Activity {
private static final int REFRESH = 0x000001;
private GameView mGameView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mGameView=new GameView(this);
Log.v("tag","填充");
setContentView(mGameView);
//开启线程
Log.v("tag","开启线程");
new Thread(new GameThread()).start();
}
Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what)
{
case Test0907.REFRESH:
mGameView.invalidate();
break;
}
super.handleMessage(msg);
}
};
public class GameThread implements Runnable {
@Override
public void run() {
Log.v("tag","子线程开始运行");
// TODO Auto-generated method stub
while(!Thread.currentThread().isInterrupted())
{
Message message = new Message();
message.what=Test0907.REFRESH;
Test0907.this.myHandler.sendMessage(message);
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
mGameView.y-=3;
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
mGameView.y+=3;
break;
}
return false;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
return true;
}
}