2013-01-06 64 views
0

我需要在画布上循环绘制一个圆圈,并在每次迭代之间延迟。所以,我意识到这是使用Thread.sleep方法延迟的一个线索。如何将canvas作为参数发送给处理程序?

这里是我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); 
    } 
}; 

此代码不能编译,因为帆布不能在处理程序来解决。如何发送处理程序中的画布对象?一般来说,如何在处理程序中发送参数?

回答

3

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

你的处理程序应该把你的视图置于一个给定的状态并且调用invalidate,然后在onDraw中检查这个状态并相应地绘制你的圆。这将适合Android绘图循环更优雅。

相关问题