0

以下は、表面に描画するための switch case ロジックですが、適切に描画されません。どこが間違っているのかわかりません。編集:役に立たなかったため、クラスは削除されました。

@Override
public boolean onTouchEvent(MotionEvent event) {
    synchronized (mThread.getSurfaceHolder()) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_UP:

            break;

        case MotionEvent.ACTION_DOWN:
            currentDrawingPath = null;
            currentDrawingPath = new DrawingPath();
            currentDrawingPath.getPath().moveTo(eventX, eventY);
            startX = eventX;
            startY = eventY;
            canvasPaths.add(currentDrawingPath);
            //invalidate();
            break;

        case MotionEvent.ACTION_MOVE:
            float dx = Math.abs(eventX - startX);
            float dy = Math.abs(eventY - startY);
            currentDrawingPath.getPath().quadTo(startX, startY, 
                    (eventX + startX)/2, (eventY + startY)/2);
            startX = eventX;
            startY = eventY;
            //currentDrawingPath.getPath().lineTo(startX, startY);
            break;

    }
    return true;
4

1 に答える 1

0

以下は、問題を修正したコードです。

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_UP:
        currentDrawingPath.getPath().lineTo(event.getX(), event.getY());
            break;
    case MotionEvent.ACTION_DOWN:
        currentDrawingPath = new DrawingPath();
        currentDrawingPath.setPaintForPath();

        // update the starting point of the new path
        currentDrawingPath.getPath().moveTo(event.getX(), event.getY());
        currentDrawingPath.getPath().lineTo(event.getX(), event.getY());
        canvasPaths.add(currentDrawingPath);
        break;
    case MotionEvent.ACTION_MOVE:
        currentDrawingPath.getPath().lineTo(event.getX(), event.getY());
        break;
    }
    return true;
于 2013-08-03T20:45:56.230 に答える