我如何获得移动手指的ID [英] How do I get the ID of the moving finger
问题描述
在code下面我测试多点触摸。当第一个手指触摸屏幕时,我得到的手指的ID,如果我也有第二手指触摸屏幕时,我得到的ID为好。但是当我移动手指,我只得到了ID为0,而不是任何的ID 1,第二次手指!我以后需要通过id来存储X和Y坐标的方法,我需要知道的ID在屏幕上绘制。
我如何得到正确的ID为运动?
@覆盖
公共布尔onTouch(视图V,MotionEvent事件){
同步(gameLoop){
对(INT I = 0; I&下; event.getPointerCount()及&放大器;我2;我++){ ID = event.getPointerCount(); //检查手指的触摸屏
如果(event.getActionIndex()== I和及(event.getActionMasked()== MotionEvent.ACTION_POINTER_DOWN || event.getActionMasked()== MotionEvent.ACTION_DOWN)){ INT J = event.getPointerCount();
INT ID = event.getPointerId(ⅰ);
字符串numDown = Integer.toString(J);
字符串SID = Integer.toString(ID);
Log.i(测试,数下来:+ numDown +ID:+ SID);
} //检查手指在屏幕上移动
如果(event.getActionIndex()== I和及(event.getActionMasked()== MotionEvent.ACTION_MOVE)){ INT ID = event.getPointerId(ⅰ);
字符串SID = Integer.toString(ID);
Log.i(测试,移动ID:+ SID);
} //检查手指离开屏幕
如果(event.getActionIndex()== I和及(event.getActionMasked()== MotionEvent.ACTION_POINTER_UP || event.getActionMasked()== MotionEvent.ACTION_UP)){ INT K = event.getPointerCount();
INT ID = event.getPointerId(ⅰ);
字符串numUp = Integer.toString(K);
字符串SID = Integer.toString(ID);
Log.i(测试,数了起来:+ numUp +ID:+ SID);
}
}
}
返回true;
}
您并不需要循环
公众最终诠释getPointerId(INT pointerIndex)
指针检索参数pointerIndex生指数。值可以
从0(第一个指针是向下)getPointerCount() - 1
块引用>先以手指
(event.getX(0),event.getY(0))
第二根手指
(event.getX(1),event.getY(1))
In the code below I'm testing multi touch. When the first finger touch the screen, I get the ID of that finger and if I also touch the screen with a second finger, I get that ID as well. But When I move the fingers, I only get the ID 0 and not any for ID 1, the second finger! I need to pass the id later to an method that stores the X and Y coordinates and I need to know which ID that draws on the screen.
How do I get the correct ID for the movement?
@Override public boolean onTouch(View v, MotionEvent event) { synchronized (gameLoop) { for (int i = 0; i < event.getPointerCount() && i < 2; i++) { id = event.getPointerCount(); // Check if finger touch screen 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); } // Check if finger moves on screen if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_MOVE)) { int id = event.getPointerId(i); String sId = Integer.toString(id); Log.i("Test", " Moving ID: " + sId); } // Check if finger leave screen if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP || event.getActionMasked() == MotionEvent.ACTION_UP)) { int k = event.getPointerCount(); int id = event.getPointerId(i); String numUp = Integer.toString(k); String sId = Integer.toString(id); Log.i("Test", "Number UP: " + numUp + " ID: " + sId); } } } return true; }
解决方案You didn't need for-loop
public final int getPointerId (int pointerIndex)
Parameters pointerIndex Raw index of pointer to retrieve. Value may be from 0 (the first pointer that is down) to getPointerCount()-1.
First finger
(event.getX(0),event.getY(0))
Second finger
(event.getX(1),event.getY(1))
这篇关于我如何获得移动手指的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!