全部博文(131)
分类: Java
2011-11-15 09:04:38
本例程实现的功能是让屏幕上得矩形每个0.5秒改变一次颜色,下面是代码
GameView.java代码
package lau.com;
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 {
Paint mPaint = null;
int miCount = 0;
public GameView(Context context) {
super(context);
mPaint = new Paint();
}
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
miCount++;
if(100 == miCount) {
miCount = 0;
}
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.WHITE);
break;
default:
break;
}
canvas.drawRect(100, 100, 100+40, 100+40, mPaint);
}
}
AndroidPratice.java代码
package lau.com;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class AndroidPractice extends Activity {
private final static int REFRESH = 1;
GameView mGameView = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGameView = new GameView(this);
setContentView(mGameView);
new Thread(r).start();
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what) {
case REFRESH:
mGameView.invalidate(); ///////////这一句要特别注意,实现刷新画布功能
break;
default:
break;
}
}
};
Runnable r = new Runnable() {
public void run() {
// TODO Auto-generated method stub
while(true) {
Message msg = new Message();
msg.what = REFRESH;
mHandler.sendMessage(msg);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
}
这里要注意handler的用法,实现了子线程与主线程的通信。
Android中还提供了一个更新界面的方法postInvalidate。