Привет, в моем приложении у меня есть место, где я хочу, чтобы палец был в верхней половине, чтобы контролировать что-то сверху и палец в нижней части, чтобы контролировать что-то на дне одновременно. Поэтому я попытался реализовать мультитач, но, похоже, я правильно понял ACTION_MOVE. Когда я перемещаю 2 пальца на экране, он перемещает объект только на сторону, которая сначала коснулась экрана. Мне было интересно, почему это так? Heres мой код:Android Multitouch - ACTION_MOVE с несколькими указателями
public boolean onTouch(View v, MotionEvent event){
//needs multitouch
if(checkInGame()){
int pointerIndex = 0;
if(event.getY() < this.getMeasuredHeight()/2){
pointerId1 = event.getPointerId(event.getActionIndex());
pointerIndex = event.findPointerIndex(pointerId1);
}else{
pointerId2 = event.getPointerId(event.getActionIndex());
pointerIndex = event.findPointerIndex(pointerId2);
}
switch(event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_MOVE:{
int numPointers = event.getPointerCount();
for (int i = 0; i < numPointers; i++){
if(event.getY(i) < this.getMeasuredHeight() /2){
Log.d("Touch","Move1");
int moveX = 0;
int moveY = 0;
moveX = (int) event.getX(i) - sX;
moveY = (int) event.getY(i) - sY;
ship1.setLoc(moveX, moveY);
sX = sX + moveX;
sY = sY + moveY;
}else{
Log.d("Touch","Move2");
int moveX = 0;
int moveY = 0;
moveX = (int) event.getX(i) - sX2;
moveY = (int) event.getY(i) - sY2;
ship2.setLoc(moveX, moveY);
sX2 = sX2 + moveX;
sY2 = sY2 + moveY;
}
return true;
}
}
case MotionEvent.ACTION_DOWN: {
if(event.getY(pointerIndex) < this.getMeasuredHeight() /2){
Log.d("Touch","Top1");
sX = (int) event.getX(pointerIndex);
sY = (int) event.getY(pointerIndex);
}else{
Log.d("Touch","Bottom1");
sX2 = (int) event.getX(pointerIndex);
sY2 = (int) event.getY(pointerIndex);
}
return true;
}
case MotionEvent.ACTION_POINTER_DOWN:{
if(event.getY(pointerIndex) < this.getMeasuredHeight() /2){
Log.d("Touch","Top2");
sX = (int) event.getX(pointerIndex);
sY = (int) event.getY(pointerIndex);
}else{
Log.d("Touch","Bottom2");
sX2 = (int) event.getX(pointerIndex);
sY2 = (int) event.getY(pointerIndex);
}
return true;
}
}
СПАСИБО ВАМ очень – MikeT