ACTION_UP和ACTION_POINTER_UP事件

时间:2016-02-20 21:26:56

标签: java android motionevent

我正在尝试检查按下屏幕时触摸屏幕的位置,指针移动或触摸是否被释放。

问题在于,当触摸被释放时,getPointerCount()包括刚刚离开屏幕的指针。因此,当我尝试收集所有当前的X和Y值时,它包含一个离开屏幕的x / y对。

我目前正在做类似的事情:

int count = e.getPointerCount();
for(i = 0; i < count; i++) {
    x = e.getX(i); 
    y = e.getY(i); 
    /* do stuff with them */ 
}

有没有办法让指针的X和Y坐标离开屏幕,或者移除离开屏幕的指针,只获得触摸屏幕的坐标?

由于

2 个答案:

答案 0 :(得分:0)

您是否尝试在应用程序中使用onTouchEvent?

import android.view.MotionEvent;

...

private int mActivePointerId;

protected void onCreate(Bundle savedInstanceState){
    ...
}

public boolean onTouchEvent(MotionEvent event){

    // Get the pointer ID
    mActivePointerId = event.getPointerId(0);

    // ... Many touch events later...

    // Use the pointer ID to find the index of the active pointer 
    // and fetch its position

    int pointerIndex = event.findPointerIndex(mActivePointerId);

    // Get the pointer's current position
    float x = event.getX(pointerIndex);
    float y = event.getY(pointerIndex);

    return true;

}

答案 1 :(得分:0)

我认为你想要的方法是getActionIndex()。从文档中可以看出,当getActionMasked()返回ACTION_POINTER_UP时,此方法将返回相应的指针索引,然后您可以在循环中忽略它(或使用它做其他事情)。