どのようにランダムにキャンバス描画を使用するには?

@Override
protected void onDraw(Canvas canvas) {
   //TODO Auto-generated method stub
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setColor(Color.RED);
    canvas.drawCircle(10,10,10, paint);
    //canvas.drawRect(10,20,30,40, paint);
}

これは簡単な onDraw 関数です。私はコメントするために drawRect を作った。私の目標は、この関数が無作為に円または四角形を描くようにする方法を見つけることです。誰かが私にそれをする方法を教えてもらえますか?

1

2 答え

if(new Random().nextInt(2)==0)
    canvas.drawCircle(10,10,10,paint);
else
    canvas.drawRectangle(10,20,30,40,paint);

あなたの行動は乱数に基づいています。 nextInt(x)はxより小さく0以上の整数を提供します。

私はnextInt()を使用しました。これは、必要に応じて2つ以上の選択肢に拡張する柔軟性を提供するためです。例えばswitch()ステートメントで同じ構造体を使用することができます...そうでなければ、st0le comments、nextBoolean素晴らしい選択です。

0
追加された
@ st0le - 私はこの方法がxの選択肢(多くの異なる形)に一般化できると考えていました。
追加された 著者 Peter Ajtai,
私は nextBoolean()に行ってしまいました:)
追加された 著者 st0le,
本当のピーター、ちょうど私がそれに言及すべきだと思った:)
追加された 著者 st0le,

これはJavaの質問よりもアンドロイドの質問ですが、正確な精度が必要でない限り(ランダム関数はすべて私が信じるランダムなものではありません)、これは次のようになります:

@Override
protected void onDraw(Canvas canvas) {
   //TODO Auto-generated method stub
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setColor(Color.RED);
    if (Math.random() > 0.5)
        canvas.drawCircle(10,10,10, paint);
    else
        canvas.drawRect(10,20,30,40, paint);
}
0
追加された