0
현재 첫 번째 멀티 터치 Android 응용 프로그램에서 작업 중이며 onTouchEvent()에 어려움을 겪고 있습니다. 나는 온라인 자습서에서 화면의 각 터치에 대한 올바른 포인터 ID 정보를 제공하는 코드를 사용했지만 ACTION_POINTER_DOWN 이벤트의 이벤트 좌표는 항상 초기 터치의 좌표와 같아 보입니다. 내 코드는 다음과 같습니다 : 로그, 내 포인터의 X 위치가 표시되는 경우, 당신은 내가 화면 (포인터 번호 1)에 추가로 터치를 추가 할 때 X 좌표를 볼 수 있습니다에서 onTouchEvent가 여러 포인터에 대해 동일한 좌표를 반환합니다.
private int getIndex(MotionEvent event) {
int idx = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
return idx;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
switch(action) {
case MotionEvent.ACTION_DOWN : {
int id = event.getPointerId(0);
Log.d("CV", "Point number " +id+ " is down at X value " +event.getX());
callbackListener.onTouchDown(event, id);
break;
}
case MotionEvent.ACTION_MOVE : {
int touchCounter = event.getPointerCount();
for (int t = 0; t < touchCounter; t++) {
int id = event.getPointerId(t);
callbackListener.onMove(event, id);
}
break;
}
case MotionEvent.ACTION_POINTER_DOWN : {
int id = event.getPointerId(getIndex(event));
Log.d("CV", "Point number " +id+ " is down at X value " +event.getX());
callbackListener.onTouchDown(event, id);
break;
}
case MotionEvent.ACTION_POINTER_UP : {
int id = event.getPointerId(getIndex(event));
//Log.d("CV", "Other point up ["+id+"]");
callbackListener.onTouchUp(event, id);
break;
}
case MotionEvent.ACTION_UP : {
int id = event.getPointerId(0);
//Log.d("CV", "Pointer up ["+id+"]");
callbackListener.onTouchUp(event, id);
break;
}
}
return true;
}
이 동일하다 첫 번째 터치 (포인터 번호 0) ...
11-25 12:34:02.911: D/CV(25231): Point number 0 is down at X value 260.60608
11-25 12:34:05.281: D/CV(25231): Point number 0 is down at X value 477.57578
11-25 12:34:06.261: D/CV(25231): Point number 0 is down at X value 581.8182
11-25 12:34:11.891: D/CV(25231): Point number 0 is down at X value 267.87878
11-25 12:34:13.321: D/CV(25231): Point number 1 is down at X value 267.87878
내가 꽤 많이 복사 및 온라인 자습서에서 전체 일을 붙여 넣은 것처럼이 나를 실망하고이 제대로 작동하지 않을 이유가 볼 수 없습니다! 당신이 상상할 수있는 또한,는 ACTION_MOVE 감사
덕분에 너무,이 일! 내 두 번째 손가락 만 움직이면 ACTION_MOVE 로그에서 포인터 번호 0과 1이 모두 움직이는 이유를 알 수 있습니까? – ktechkez