私はユーザーが指で線を引くためにこのコードを使用しています:
public class DrawingView extends View {
private Paint paint;
private Path path;
public DrawingView(Context context , AttributeSet attrs) {
super(context, attrs);
this.paint = new Paint();
this.paint.setAntiAlias(true);
this.paint.setColor(Color.BLACK);
this.paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5f);
this.path = new Path();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
path.lineTo(eventX, eventY);
break;
default:
return false;
}
// Schedules a repaint.
invalidate();
return true;
}
public void clear() {
path.reset();
invalidate();
}
public void setPaintColor(int color) {
paint.setColor(color);
}
public int getCurrentPaintColor() {
return paint.getColor();
}
}
setPaintColor()メソッドを使用して、ペイントの色を変更しています。しかし、色を変更すると、描画全体が変更されます(以前に描画した線も)。ペイントの色を変更して、以前の図面をそのままにしておくにはどうすればよいですか?新しいパスを作成しようとしましたが、前の描画が消えます。