我创建了一个自定义视图来绘制用户触摸点。
的onDraw()
@Override
protected void onDraw(Canvas canvas) {
mCanvas = canvas;
if (null != mPath && null != mPaint)
mCanvas.drawPath(mPath, mPaint);
}
的onTouchEvent()
@Override
public boolean onTouchEvent(MotionEvent event) {
if (null == mPath) {
mPath = new Path();
}
if (MotionEvent.ACTION_DOWN == event.getAction()) {
if (null != mOnDrawListener) {
mOnDrawListener.onStartDraw(this);
}
mPath.moveTo(event.getX(), event.getY());
mPath.lineTo(event.getX(), event.getY());
} else if (MotionEvent.ACTION_MOVE == event.getAction()) {
/* if (null != mOnDrawListener) {
mOnDrawListener.onDrawing(this, getBitmap());
}*/
mPath.lineTo(event.getX(), event.getY());
} else if (MotionEvent.ACTION_UP == event.getAction()) {
if (null != mOnDrawListener) {
mOnDrawListener.onStopDrawing(this, getBitmap());
}
mPath.lineTo(event.getX(), event.getY());
}
invalidate();
return true;
}
问题是我有两个MODES
PEN和ERASER 。如果选择了Mode.PEN
,我必须绘制视图。这是成功的。
但是,当用户选择Mode.ERASER
时,我想从path
中删除该行或特定点。
修改
我无法使用点,因为列表中的点必须使用for
循环while
循环进行绘图,这会减慢绘图速度
提前致谢