0

キャンバスに円を描きたい。関数を使用して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」から呼び出されたとき、一度だけ動作します。

ps ペイント、幅、高さ、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();
    }
4

2 に答える 2

0

onDraw()ビュー自体を再描画する必要があるときはいつでも呼び出されます。これには、レイアウトの変更、スクロールなど、さまざまな理由が考えられます。

ビューを呼び出しinvalidate()て再描画を行うこともできます。

タッチ ペインティングやゲームなど、非常に高速で描画する場合は、TextureView代わりに を使用することを検討してください。

于 2013-07-31T16:11:22.667 に答える
0

私は次のようにしました。

1) カスタム ビューを定義します。

2) onDraw メソッドで、円の作成/表示を行います。

3) カスタム ビューの onDraw メソッドの最終行で、invalidate() メソッドを呼び出します。

それが機能するかどうか教えてください

于 2013-07-31T15:13:48.187 に答える