#android
#Android
Вопрос:
Мне нужно нарисовать линию на макете, для этого я прочитал здесь вопрос и использую класс DrawView, но в какой-то момент мне нужно очистить этот вид и нарисовать на нем другую линию (или просто изменить координаты первой строки, если это возможно).
Но я не знаю, как я мог бы сделать это легко, к сожалению, единственная идея, которая у меня есть, — это удалить DrawView из макета и каждый раз создавать другой DrawView.
Редактировать: я пытался использовать save(); для сохранения пустого холста и restore() каждый раз, когда мне нужно его очистить, но, похоже, это не работает…
public class DrawView extends View {
Paint paint = new Paint();
float startX;
float startY;
float endX;
float endY;
public DrawView(Context context, float startX, float startY, float endX, float endY) {
super(context);
paint.setColor(Color.WHITE);
this.setMinimumHeight(300);
this.setMinimumWidth(300);
this.startX = startX;
this.startY = startY;
this.endX = endX;
this.endY = endY;
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(startX, startY, endX, endY, paint);
}
}
Ответ №1:
Вы можете использовать
canvas.drawColor(int color)
чтобы покрасить холст в любой цвет (это означает, что вы очищаете все, что было нарисовано раньше). Если вы используете
canvas.drawColor(Color.TRANSPARENT);
это должно привести к очистке вашего холста.
Ответ №2:
знаете, если вы хотите программно рисовать непосредственно на экране, то вы можете отказаться от XML и сделать это через SurfaceView, вот инструкция: www.edu4java.com/