如何检测Android中画布上绘制的圆圈上的手指触摸点?

时间:2014-05-02 05:07:33

标签: android canvas

我正在开发一个Android应用程序,因为我绘制了一个圆圈,并且还随着手指触摸点移动。但我的问题是,当我触摸屏幕中的任何位置时,它从那里开始,我想在我只在圆圈内触摸时移动。请帮我。 这是我的代码,

 public class Circle extends View {

    int xTouch = 0;
    int yTouch = 0;
    int radius = 100;

    // CONSTRUCTOR
    public Circle(Context context, int x, int y) {
        super(context);
        setFocusable(true);
        xTouch = x;
        yTouch = y;
        Log.v("" + xTouch, "" + yTouch);

    }

    @Override
    protected void onDraw(Canvas canvas) {

        Paint p = new Paint();
        p.setAntiAlias(true);
        p.setColor(Color.DKGRAY);
        p.setStyle(Paint.Style.FILL);
        canvas.drawCircle(xTouch, yTouch, radius, p);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int actionIndex = event.getActionIndex();
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

            xTouch = (int) event.getX(0);
            yTouch = (int) event.getY(0);

            invalidate();

            break;

        case MotionEvent.ACTION_MOVE:
            xTouch = (int) event.getX(actionIndex);
            yTouch = (int) event.getY(actionIndex);
            invalidate();

            break;
        default:
            break;
        }
        return true;
    }

}

2 个答案:

答案 0 :(得分:0)

Action_Down - 用于触摸屏幕的第一个指针(手指)。这会启动手势。

Action_Pointer_Down - 用于进入屏幕之外的额外指针(秒指)。

Action_Move - 在按下手势期间发生了更改

Action_Pointer_Up - 非主指针上升时发送。

Action_Up - 在最后一个指针离开屏幕时发送

现在您可以根据上述操作进行编码。

答案 1 :(得分:0)

记录最后一次触摸的坐标。

当有新的ACTION_DOWN时,

将触摸坐标与最后一个

进行比较

看他们的距离是否小于半径。

如果是,请将圆圈移动到新坐标

相关问题