-1

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アクションでのみ表示されることを意味します。手描きのように線を引いてみたい。

4

2 に答える 2

0

アクションを実行するときのみ、drawPath を呼び出します。したがって、drawPath をすべてのケースにコピーすると、sit が機能するはずです

于 2012-11-30T13:25:26.433 に答える
0

MotionEvent.ACTION_UPイベント処理コードmCanvas.drawPath(mPath, mPaint);では、線を描画するために使用します。

このコード行を他のイベント処理コード部分 (MotionEvent.ACTION_MOVEおよびMotionEvent.ACTION_DOWN) に追加すると、以前にも線が描画されます。

于 2012-11-30T13:26:02.603 に答える