简体   繁体   English

SurfaceView绘图应用程序的OnTouchEvent逻辑

[英]OnTouchEvent logic for surfaceview drawing app

Below is a switch case logic for drawing on the surface, it doesn't draw properly. 以下是在表面上绘制的开关盒逻辑,它无法正确绘制。 Not sure where am i going wrong. 不知道我要去哪里错了。 EDIT: class was removed as it was not helpful. 编辑:类被删除,因为它没有帮助。

@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;

Following is the code that fixed the issue, 以下是解决此问题的代码,

    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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM