2013-07-31 77 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

相關問題