-1

我想在 android 的 ontouch 事件中使用画布画一条线。

这是我的代码:

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动作中。我想像徒手画一样画一条线。

4

2 回答 2

0

仅当您执行操作时才调用 drawPath。因此,如果您将 drawPath 复制到所有案例,则应该可以

于 2012-11-30T13:25:26.433 回答
0

在您的MotionEvent.ACTION_UP事件处理代码中,您mCanvas.drawPath(mPath, mPaint);用来画线。

在其他事件处理代码部分(MotionEvent.ACTION_MOVEMotionEvent.ACTION_DOWN)中添加这行代码,它也会更早地绘制该行。

于 2012-11-30T13:26:02.603 回答