如何从路径CustomView

时间:2017-11-29 12:02:34

标签: java android view android-custom-view

我创建了一个自定义视图来绘制用户触摸点。

  

的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循环进行绘图,这会减慢绘图速度

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以清除整个画布

mCanvas.drawColor(Color.WHITE);

您还可以在此库中看到相同的功能

Signature Pad