0
私は一日を使い、無作為の色で四角形を描画し、画面全体を塗りつぶす方法を試しました。私は何が起こると思います、drawRect()が呼び出されると、以前の描画を再描画します。それは意味を成しませんが、そのすべてが得られます。これはコードであり、私はこの問題を解決するために何をすべきか分からず、結果はここにあります。 http://i.imgur.com/a083U0a.pngAndroidのキャンバスdrawRect()も以前の描画を再描画します
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int numberPerRow = 10;
int x = getWidth()/numberPerRow;
int y = getHeight();
for(int i = 0; i < 50; i++){
for (int j = 0; i <= numberPerRow; j++){
Paint paintTopRight = new Paint();
int randColor = randomColor();
paintTopRight.setColor(randColor);
canvas.drawRect(j*x,i*x,x,x,paintTopRight);
}
}
}
public int randomColor() {
int r = (int) (0xff * Math.random());
int g = (int) (0xff * Math.random());
int b = (int) (0xff * Math.random());
return Color.rgb(r, g, b);
}
}
へ
変更新しい
onDraw(Canvas canvas)
方法あなたは(無効に使用して試すことができます)。あなたのonDraw()の終わりに。関数? –ええ、私は試しましたが、それは異なる色で点滅し始めますが、まだ正方形が正しく表示されていません。 –
そうですね。これはあなたの 'View'を無限の描画ループに置きます。まず、 'drawRect()'メソッドのパラメータを見てください。第3と第4のパラメータは 'width'と' height'ではなく 'right'と' bottom'です。次に、内側の 'for'ループを調べます。終了条件で外側ループのカウンタを使用しています。すなわち、i <= numberPerRowである。 –