我需要在画布上周期性地画一个圆圈,每次迭代之间都有延迟。所以,我意识到这是一个使用Thread.sleep
方法进行延迟的线程。
这是我的onDraw
方法:
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if (touching) {
paint.setStrokeWidth(STROKE_WIDTH);
paint.setColor(_color);
paint.setStyle(Paint.Style.FILL);
Thread background = new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
try {
while (f<=75){
Thread.sleep(100);
drawHandler.sendMessage(drawHandler.obtainMessage());
}
}
catch (InterruptedException e) {
// TODO: handle exception
Log.e("ERROR", "Thread Interrupted");
}
}
});
background.start();
}
这是我的处理程序:
private Handler drawHandler = new Handler() {
public void handleMessage (Message msg) {
canvas.drawCircle(x, y, f, paint);
}
};
无法编译此代码,因为无法在处理程序中解析canvas。如何在处理程序中发送canvas对象?通常,如何在处理程序中发送参数?
答案 0 :(得分:3)
您可以简单地使用message.object来传递画布。 但这不是绘画的方式。
您的处理程序应将您的视图置于给定状态并调用invalidate,然后在onDraw中检查该状态并相应地绘制您的圆圈。这将在Android绘图周期中更加优雅。