2013-07-31 83 views
0

我想在画布上绘制圆圈。我使用函数做ID:为什么此代码只能工作一次[Android-canvas]

 public static void add() 
     { 
      float a = 20 + (new Random()).nextInt(width-40); 
      float b = 20 + (new Random()).nextInt(height-40); 


      paint.setColor(Color.rgb(13, 13, 13)); 
      c.drawCircle(a, b, r, paint); 

      paint.setColor(Color.rgb(119, 119, 119)); 
      c.drawCircle(a, b, r-3, paint); 
     } 

它只有一次,当它从“onDraw”调用。

p.s. 油漆,宽度,高度,c - 公共变量。

UPD:

protected void onDraw(Canvas canv) 
    { 
     super.onDraw(canv); 
     c = canv; 
     paint = new Paint(); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setAntiAlias(true); 
     paint.setColor(Color.WHITE); 
     c.drawPaint(paint); 
     add(); 
    } 
+0

移动你在'onDraw'中绘制并调用'invalidate()'刷新/更新。 – Raghunandan

回答

0

onDraw()将被称为每当视图需要重新绘制本身。这可能是由于许多原因,如布局更改,滚动等。

您也可以在视图上调用invalidate()以重新绘制。

如果您要以非常高的速度进行绘制,如触摸绘画或某些游戏等,请考虑使用TextureView代替。

0

我做了如下。

1)定义一个自定义视图。 2)在其onDraw方法中,创建/显示圆圈。 3)在自定义视图的onDraw方法的最后一行调用invalidate()方法。

让我知道,如果它

+0

1)我有视图类。此类别中的所有功能 2)我将onDraw方法添加到帖子中 3)我需要画圆圈不是一次,而是一次触摸(功能“添加”触摸的呼叫) 我该怎么做?我不明白第三个提示。 – pvl

相关问题