0

我需要在画布上循环绘制一个圆圈,每次迭代之间都有延迟。所以,我意识到它是一个线程来使用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);
    }
};

无法编译此代码,因为无法在处理程序中解析画布。如何在处理程序中发送画布对象?通常,如何在处理程序中发送参数?

4

1 回答 1

3

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

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

于 2013-01-06T16:16:47.050 回答