【发布时间】:2017-06-16 01:19:33
【问题描述】:
我的应用出现问题,我需要根据是按下一根手指还是两根手指来执行不同的操作。
目前我有以下代码:
@Override
public boolean onTouchEvent(MotionEvent event){
int touchX = (int)event.getX();
int touchY = (int)event.getY();
int action = event.getActionMasked();
//Multitouch
if(event.getPointerCount() > 1 && action == MotionEvent.ACTION_POINTER_DOWN){
System.out.println("2 Finger press");
return true;
}
else if(action == MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_POINTER_DOWN){
if(event.getPointerCount() == 1) {
System.out.println("single finger down");
invalidate();
return true;
}
}
return false;
}
我遇到的问题是,当我用 2 根手指按下时,多点触控部分会注册,然后单次按下也会注册。
我在谷歌上搜索了一些解决方法,这就是为什么我要检查action != MotionEvent.ACTION_POINTER_DOWN 的单点触摸条件,我认为它可以解决问题。这并没有解决问题,因此我决定检查event.getPointerCount() == 1,但不幸的是,当我用两根手指按下时,这仍然会导致两条线都打印出来。
总而言之,我只需要在按下 2 个手指而不是同时按下两个手指时调用 2 个手指部分。
【问题讨论】:
标签: java android multi-touch touch-event