我想在android中的ontouch事件中使用canvas绘制一条线。
这是我的代码:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
invalidate();
break;
case MotionEvent.ACTION_MOVE:
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
mPath.lineTo(mX, mY);
mCanvas.drawPath(mPath, mPaint);
mPath = new Path();
paths.add(mPath);
mPath.reset();
invalidate();
break;
}
但是当我从鼠标按钮上移开手指时会出现这条线,这意味着该线只出现在touchesup
动作中。我想画一幅像写意画一样的线。
答案 0 :(得分:0)
只有在执行操作时才调用drawPath。因此,如果您将drawPath复制到所有情况,则应该起作用
答案 1 :(得分:0)
在MotionEvent.ACTION_UP
事件处理代码中,您使用mCanvas.drawPath(mPath, mPaint);
绘制线条。
在其他事件处理代码部分(MotionEvent.ACTION_MOVE
和MotionEvent.ACTION_DOWN
)中添加此行代码,它也会更早地绘制该行。