0

我需要计算 MotionEvent 的中心,例如当用户用手指触摸屏幕时,我想知道 x,y 中的点是这个手指触摸的中心,我目前使用 motionEvent.getX()和motionEvent.getY(),但它似乎让我在手指触摸的最底部得到了一些点,这对我来说很糟糕......那么它是如何完成的?

4

2 回答 2

0

利用

public static void midpoint(MotionEvent event, Point point) {
    float x1 = event.getX(0);
    float y1 = event.getY(0);
    float x2 = event.getX(1);
    float y2 = event.getY(1);
    midpoint(x1, y1, x2, y2, point);
}

public static void midpoint(float x1, float y1, float x2, float y2, Point point) {
    point.x = (x1 + x2) / 2.0f;
    point.y = (y1 + y2) / 2.0f;
}

从视图的 onTouchEvent 调用 midpoint(MotionEvent event, Point point)。

于 2013-10-08T07:49:23.443 回答
0

在你的 OnTouchListener 中尝试这样的事情:

    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        float x = event.getX();
        float y = event.getY();

        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            startX = x;
            startY = y;
        }
        else if (event.getAction() == MotionEvent.ACTION_UP)
        {
            centerX = (startX + x) / 2;
            centerY = (startY + Y) / 2;
        }

        return false;
    }

其中 startX、startY、centerX、centerY 是可以从侦听器访问的字段变量。

于 2013-10-08T07:46:24.147 回答