Android让用户画一个缩放圈



我正在尝试为一个类制作一个基本的"Paint"风格的应用程序,我尝试实现的一部分是能够绘制一个圆圈,当用户移动手指选择中心时,圆圈的大小会缩放,并将其向外拖动到所需的半径。问题是,无论我怎么尝试,它最终只是在用户移动手指的地方重复地戳出一个小圆圈。这个想法是,应用程序将获取按下时中心的坐标(tX, tY),每次用户移动时画一个半径为r的圆,然后在他们抬起手指时完成它。

编辑:注释掉的部分是我测试不同东西的部分。

onMotionEvent自定义类的代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
    //detect user touch     
    float tX = event.getX();
    float tY = event.getY();
    float rX = 0;
    float rY = 0;
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        drawPath.moveTo(tX, tY);
        break;
    case MotionEvent.ACTION_MOVE:
        if(shapes){
            rX = (int) event.getX();
            rY = (int) event.getY();
            r =  (float) Math.sqrt(Math.pow(tX - rX, 2) + Math.pow(tY - rY, 2));
            drawCanvas.drawCircle(tX, tY, r, drawPaint);
            invalidate();
        }else{
            drawPath.lineTo(tX, tY);
        }
        break;
    case MotionEvent.ACTION_UP:
        /*rX = event.getX();
        rY = event.getY();
        r =  (float) Math.sqrt(Math.pow(tX - rX, 2) + Math.pow(tY - rY, 2));*/
        if(shapes){
            if(shape_sel == 0){
                //drawCanvas.drawCircle(tX, tY, r, drawPaint);
                drawPath.reset();
            /*}else if(shape_sel == 1){
            }
            else{
            */}
        }else{
            drawCanvas.drawPath(drawPath, drawPaint);
            drawPath.reset();
        }
        break;
    default:
        return false;
    }
    invalidate();
    return true;
}

您不是在触地时保存tx和ty,而是在每个事件时重置它们。您需要将tx和ty保存在类级别变量中,并将其放在下大小写中。

相关内容

最新更新