Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么此代码只工作一次[Android canvas]_Java_Android_Android Canvas - Fatal编程技术网

Java 为什么此代码只工作一次[Android canvas]

Java 为什么此代码只工作一次[Android canvas],java,android,android-canvas,Java,Android,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));

我想在画布上画一个圆圈。我使用函数做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、 美国。 油漆,宽度,高度,c-公共变量

UPD.:

我是这样做的

1) 定义自定义视图

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

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

让我知道它是否工作

onDraw()
将在视图需要重新绘制自身时被调用。这可能是由于许多原因造成的,如布局更改、滚动等

也可以对视图调用
invalidate()
,以重新绘制


如果你要画一个很高的速率,比如触摸画或者一些游戏,请考虑使用<代码> TrutuVIEW < /C>。p> 将您的绘图移入

onDraw
并调用
invalidate()
以刷新/更新。1)我有一个视图类。这个类中的所有函数2)我在帖子中添加了onDraw方法3)我需要画圆圈,不是一次,而是在触摸时(函数“add”在触摸时调用)我怎么做?我不明白第三个提示。
 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();
    }