为什么这个代码只能工作一次[Android canvas]



我想在画布上画一个圆圈。我用函数做id:

      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-公共变量。

更新:

 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();
    }
每当视图需要重新绘制自己时,就会调用

onDraw()。这可能是由于许多原因造成的,如布局更改、滚动等。

也可以对视图调用invalidate()以进行重新绘制。

如果你想以很高的速度绘画,比如触摸绘画或一些游戏等,可以考虑使用TextureView

我做了如下操作。

1) 定义自定义视图。

2) 在其onDraw方法中,创建/显示圆。

3) 在自定义视图的onDraw方法的最后一行调用invalidate()方法。

让我知道它是否工作

最新更新