如何在android中使用canvas绘制一条线?

时间:2012-11-30 13:18:46

标签: java android

我想在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动作中。我想画一幅像写意画一样的线。

2 个答案:

答案 0 :(得分:0)

只有在执行操作时才调用drawPath。因此,如果您将drawPath复制到所有情况,则应该起作用

答案 1 :(得分:0)

MotionEvent.ACTION_UP事件处理代码中,您使用mCanvas.drawPath(mPath, mPaint);绘制线条。

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