Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android触摸问题_Android_Touch_Ontouchlistener - Fatal编程技术网

Android触摸问题

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

我有一个SurfaceView,我想识别MotionEvent Action\u Up,但只触发Action\u Down事件。我还想识别另一个触摸,虽然第一个手指仍在屏幕上,但OnTouch事件不会再次触发

@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,您可能没有多点触控支持