Android触摸问题
我有一个SurfaceView,我想识别MotionEvent Action\u Up,但只触发Action\u Down事件。我还想识别另一个触摸,虽然第一个手指仍在屏幕上,但OnTouch事件不会再次触发Android触摸问题,android,touch,ontouchlistener,Android,Touch,Ontouchlistener,我有一个SurfaceView,我想识别MotionEvent Action\u Up,但只触发Action\u Down事件。我还想识别另一个触摸,虽然第一个手指仍在屏幕上,但OnTouch事件不会再次触发 @Override public boolean onTouch(View arg0, MotionEvent event) { int pointerCount = event.getPointerCount(); if (event.getAction() == and
@Override
public boolean onTouch(View arg0, MotionEvent event) {
int pointerCount = event.getPointerCount();
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
//blabla
} else /* if (event.getAction() == android.view.MotionEvent.ACTION_UP) */{
//blabla
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int pointerCount = event.getPointerCount();
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
//blabla
} else /* if (event.getAction() == android.view.MotionEvent.ACTION_UP) */{
//blabla
}
return super.onTouchEvent(event);
}
无论屏幕上有多少个手指,指针计数始终为1。如果您有兴趣收到与该触摸相关的剩余事件的通知(
操作移动
,操作向上
),则必须在OnTouchListener
中为操作向下
事件返回true。)
我还建议使用监听器或在视图的onTouchEvent
方法中监视触摸,而不是两者都监视
HTH尝试在变量中捕获getAction,而不是在onTouch中多次调用它。还要确保你让听众知道什么时候该动作被使用
public boolean onTouch(View v, MotionEvent event) {
final int action = event.getAction();
boolean consumed = false;
switch(action){
case MotionEvent.ACTION_DOWN:
//down stuff logic
consumed = true;
break;
case MotionEvent.ACTION_UP:
//up stuff logic
consumed = true;
break;
case MotionEvent.ACTION_MOVE:
//move stuff logic
consumed = true;
break;
}
return consumed;
}
至于屏幕上的手指数量,请记住多点触控支持是从API级别5开始的,因此根据您的手机/minSDK,您可能没有多点触控支持