获得MotionEvent Android的中心点

时间:2013-10-08 07:38:32

标签: android touch motionevent

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

2 个答案:

答案 0 :(得分: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是可以从侦听器访问的字段变量。

答案 1 :(得分: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事件,Point point)。