Android 具有ID的多点触摸问题
在下面的代码中,我正在我的设备上测试multi-touch。我的问题是移动动作。如果我用一个手指触摸屏幕,我会在Logcat中获得触摸输入的ID,当我用第二个手指触摸屏幕并开始移动时,我会获得两个手指的ID,尽管第一个手指没有移动!我很困惑,需要一些帮助来改进我的代码Android 具有ID的多点触摸问题,android,Android,在下面的代码中,我正在我的设备上测试multi-touch。我的问题是移动动作。如果我用一个手指触摸屏幕,我会在Logcat中获得触摸输入的ID,当我用第二个手指触摸屏幕并开始移动时,我会获得两个手指的ID,尽管第一个手指没有移动!我很困惑,需要一些帮助来改进我的代码 @Override public boolean onTouch(View v, MotionEvent event) { int pointerId; int pointerIndex; synchro
@Override
public boolean onTouch(View v, MotionEvent event) {
int pointerId;
int pointerIndex;
synchronized (gameLoop) {
for (int i = 0; i < event.getPointerCount() && i < 2; i++) {
num = event.getPointerCount();
//id = event.getPointerId(i);
// Down
if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN || event.getActionMasked() == MotionEvent.ACTION_DOWN)) {
int j = event.getPointerCount();
int id = event.getPointerId(i);
String numDown = Integer.toString(j);
String sId = Integer.toString(id);
Log.i("Test", "Number DOWN: " + numDown + " ID: " + sId);
}
// Move
if(event.getActionMasked() == MotionEvent.ACTION_MOVE) {
int j = event.getPointerCount();
int id = event.getPointerId(i);
String numDown = Integer.toString(j);
String sId = Integer.toString(id);
Log.i("Test", "Moving: " + numDown + " ID: " + sId);
}
// Up
if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP || event.getActionMasked() == MotionEvent.ACTION_UP)) {
int k = event.getPointerCount();
int kid = event.getPointerId(i);
String numUp = Integer.toString(k);
String ssId = Integer.toString(kid);
Log.i("Test", "Number UP: " + numUp + " ID: " + ssId);
}
}
}
return true;
}
@覆盖
公共布尔onTouch(视图v,运动事件){
int pointerId;
int pointerIndex;
已同步(gameLoop){
对于(int i=0;i
案例动作事件。动作\u移动:
int j=event.getPointerCount();
int fingerOneDown=0;
int fingertwown=0;
对于(int i=0;i
case MotionEvent.ACTION_MOVE:
int j= event.getPointerCount();
int fingerOneDown=0;
int fingerTwoDown=0;
for(int i = 0; i < j; ++i)
{
int pointerIndex = i;
id= event.getPointerId(pointerIndex);
Log.d("pointer id - move",Integer.toString(id));
if(id== 0)
{
fingerOneDown = 1;
int fingerOneX = event.getX(pointerIndex);
int fingerOneY = event.getY(pointerIndex);
Log.e("finger touch","touch=="+fingerOneX+","+fingerOneY);
}
if(pointerId == 1)
{
fingerTwoDown = 1;
int fingerTwoX = event.getX(pointerIndex);
int fingerTwoY = event.getY(pointerIndex);
Log.e("finger touch","touch=="+fingerTwoX+","+fingerTwoY);
}
}
break;