0
저는 하루 종일 무작위로 사각형을 그려 전체 화면을 채우는 데 보냈습니다. 내가 생각하는 일은 drawRect()가 호출 될 때 이전 그리기를 다시 그리는 것이고, 그것은 전혀 이해가되지 않는다. 이것은 코드이며,이 문제를 해결하기 위해 무엇을 해야할지 모르겠다. 여기에 그 결과가있다. http://i.imgur.com/a083U0a.png안드로이드 캔버스 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()'메소드의 매개 변수를 살펴 보자. 세 번째와 네 번째 매개 변수는'width'와'height'가 아니라'right'와'bottom'입니다. 둘째, 안쪽 'for' 루프를 검사하십시오. 종료 조건에서 외부 루프의 카운터를 사용하고 있습니다. 즉, i = numberPerRow이다. –