2

CanvasAndroidで線を描きたいです。、 、をontouchevent使用してtouchesmove、このタスクにうんざりしました。マウスボタンをタッチすると線が表示されます。手描きのような線を描きたい。touchesuptouchesdown

ここに私のコードがあります、

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;
}
4

1 に答える 1

0

私が見る限り、drawPath()メソッドは で実行されますACTION_UP。このメソッドも呼び出す必要があるACTION_MOVEため、移動するたびにパスが描画されます。これが機能するには、もちろんコピーmPath.lineTo(mX, mY)する必要があります。ACTION_MOVE

于 2012-11-30T08:27:39.490 に答える