我正在尝试检查按下屏幕时触摸屏幕的位置,指针移动或触摸是否被释放。
问题在于,当触摸被释放时,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坐标离开屏幕,或者移除离开屏幕的指针,只获得触摸屏幕的坐标?
由于
答案 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
时,此方法将返回相应的指针索引,然后您可以在循环中忽略它(或使用它做其他事情)。