因此,我正在開發一個必須處理多點觸控的應用程序。基本上我想單點觸摸旋轉(這是沒有問題的)。多點觸控滾動。如何編寫多點觸控
我有基本的代碼,但是我遇到了從單一切換到多點觸控和副切換的問題。基本上,運動會發生顛簸,因爲多點觸摸的中間位置(兩個手指)和單指的絕對位置處於一定距離。所以如果我在屏幕上有兩個手指,它們組成一箇中間位置,然後擡起一個手指,就像從中間位置到絕對單指位置的快速移動。這將是我不想要的運動。
這是我的代碼:
@Override
public boolean onTouchEvent(MotionEvent event) {
float xEvent[] = new float[ 2 ];
float yEvent[] = new float[ 2 ];
switch(event.getPointerCount()) {
case 1:
xEvent[ 0 ] = event.getX(0);
yEvent[ 0 ] = event.getY(0);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown(xEvent[ 0 ], yEvent[ 0 ]);
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchRotate(xEvent[ 0 ], yEvent[ 0 ]);
return true;
default: return super.onTouchEvent(event);
}
case 2:
xEvent[ 0 ] = event.getX(0);
yEvent[ 0 ] = event.getY(0);
xEvent[ 1 ] = event.getX(1);
yEvent[ 1 ] = event.getY(1);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown(((xEvent[ 0 ] + xEvent[ 1 ])/2), ((yEvent[ 0 ] + yEvent[ 1 ])/2));
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchSlide(((xEvent[ 0 ] + xEvent[ 1 ])/2), ((yEvent[ 0 ] + yEvent[ 1 ])/2));
return true;
case MotionEvent.ACTION_POINTER_1_UP:
camera.onTouchDown(xEvent[ 1 ], yEvent[ 1 ]);
return true;
case MotionEvent.ACTION_POINTER_2_UP:
camera.onTouchDown(xEvent[ 0 ], yEvent[ 0 ]);
return true;
default: return super.onTouchEvent(event);
}
default: return false;
}
}
相機的onTouchDown功能只是設置觸摸移動的第一個值。這就是爲什麼我在向上移動中使用它爲來自多點觸控的單點觸摸移動設置新的開始值的原因。
我希望有人知道我的問題是什麼,並可以進一步幫助我。
Thanx!我剛剛完成了一個實現80%的實現。但在閱讀完鏈接後,我想我可以使用面具和ID做的更好。 – Espen 2010-11-20 19:56:30