Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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/3/android/233.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
Java Android OnTouch同步触摸_Java_Android_Ontouchlistener - Fatal编程技术网

Java Android OnTouch同步触摸

Java Android OnTouch同步触摸,java,android,ontouchlistener,Java,Android,Ontouchlistener,我的活动中有一个OnTouchListener,它被设置在一个布局和其他5个按钮上,如果你一个接一个地/单独按下它们,它们工作得很好,但是如果我想按下一个按钮,并且仍然在布局上移动手指,它将无法工作,直到我从按钮上松开手指。 如何使用OnTouch,以便可以同时使用几个视图 @Override public boolean onTouch(View v, MotionEvent event){ switch (v.getId()) { case R.id.layout:

我的活动中有一个OnTouchListener,它被设置在一个布局和其他5个按钮上,如果你一个接一个地/单独按下它们,它们工作得很好,但是如果我想按下一个按钮,并且仍然在布局上移动手指,它将无法工作,直到我从按钮上松开手指。 如何使用OnTouch,以便可以同时使用几个视图

@Override
public boolean onTouch(View v, MotionEvent event){
    switch (v.getId()) {

        case R.id.layout:

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                // On click on screen
                oldX = (int) event.getX(); // set first click X as old
                oldY = (int) event.getY(); // set first click Y as old
                isClicked = true;
                return true;
            }

            else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                isClicked = false;

                // On finger move on screen
                newX = (int) event.getX(); // set current X
                newY = (int) event.getY(); // set current Y

                diff[0] = newX - oldX; // Set X difference
                diff[1] = newY - oldY; // Set y difference

                oldX = newX; // set current X as last X
                oldY = newY; // set current Y as last Y

                // Send to server
                new UDP_handler(IPAddr, port).execute("MOVE|" + diff[0] + "," + diff[1]);

                return true;
            }

            else if(event.getAction() == MotionEvent.ACTION_UP){
                if (isClicked)
                    new UDP_handler(IPAddr, port).execute("CLICK|LC");
                return true;    
            }

            break;

        case R.id.Button0:
            if (event.getAction() == MotionEvent.ACTION_UP){
                new UDP_handler(IPAddr, port).execute("CLICK|MUP");
                return true;    
            }
            break;

        case R.id.Button1:
            if (event.getAction() == MotionEvent.ACTION_UP){
                new UDP_handler(IPAddr, port).execute("CLICKUP|LC");
                return true;    
            }
            else if(event.getAction() == MotionEvent.ACTION_DOWN){
                new UDP_handler(IPAddr, port).execute("CLICKDOWN|LC");
                return true;    
            }
            break;

        case R.id.Button2:
            if (event.getAction() == MotionEvent.ACTION_UP){
                new UDP_handler(IPAddr, port).execute("CLICK|MC");
                return true;
            }
            break;

        case R.id.Button3:
            if (event.getAction() == MotionEvent.ACTION_UP){
                new UDP_handler(IPAddr, port).execute("CLICK|RC");
                return true;
            }
            break;

        case R.id.Button4:
            if (event.getAction() == MotionEvent.ACTION_UP){
                new UDP_handler(IPAddr, port).execute("CLICK|MDOWN");
                return true;    
            }
            break;

        default:
            break;
    }
    return false;
}

(我想按下R.id.button1,同时在R.id.layout上移动我的手指,查看它的上下动作)

也许可以使用GestureOverlay?@MichałSzydłowski我不知道如何像在onTouch功能中那样使用它