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