Я пытаюсь нарисовать несколько прямоугольников. Я хочу иметь возможность рисовать каждый прямоугольник вручную. Я могу нарисовать один, но затем, когда я вызываю invalidate (), конечно, холст очищается.
Есть ли другой способ вызвать onDraw (), чтобы холст не очищался?
Вот что у меня есть:
У меня просто есть класс, который расширяет SurfaceView, а затем
Переопределить onDraw
@Override
protected void onDraw(Canvas canvas)
{
Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawRect(xCoor, yCoor, rectW, rectH, paint);
}
А потом я переопределяю OnTouchEvent
@Override
public boolean onTouchEvent (MotionEvent event)
{
downX = Math.round(event.getX());
downY = Math.round(event.getY());
invalidate(); //clears canvas which I don't want
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
xCoor = downX;
yCoor = downY;
rectH = 0;
rectW = 0;
break;
case MotionEvent.ACTION_MOVE:
rectH = downY;
rectW = downX;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
Я делаю это совершенно неправильно? :)
Любая помощь будет оценена.
Спасибо!