gpt4 book ai didi

java - 如何将 Canvas 作为参数发送给处理程序?

转载 作者:行者123 更新时间:2023-12-02 00:04:24 27 4
gpt4 key购买 nike

我需要在 Canvas 上循环地画一个圆圈,每次迭代之间都有延迟。因此,我将其实现为一个线程,使用 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 对象?一般来说,如何在处理程序中发送参数?

最佳答案

您可以简单地使用 message.object 来传递 Canvas 。但这不是绘图的工作方式。

您的处理程序应该将您的 View 置于给定状态并调用 invalidate,然后在 onDraw 中检查该状态并相应地绘制您的圆圈。这将更适合 Android 绘图周期。

关于java - 如何将 Canvas 作为参数发送给处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com