Android 如何按下第一个按钮,释放第二个按钮并获取第二个按钮的触摸事件?

Android 如何按下第一个按钮,释放第二个按钮并获取第二个按钮的触摸事件?,android,button,ontouchlistener,Android,Button,Ontouchlistener,我有两个按钮。这就是我正在做的: 我按下按钮1 然后我将手指移到按钮2 我打开按钮2 我为2个按钮设置了触摸监听器。它记录两个按钮的触摸事件: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我有两个按钮。这就是我正在做的:

  • 我按下按钮1
  • 然后我将手指移到按钮2
  • 我打开按钮2
  • 我为2个按钮设置了触摸监听器。它记录两个按钮的触摸事件:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button button1 = (Button) findViewById(R.id.button1);
            Button button2 = (Button) findViewById(R.id.button2);
    
            button1.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN) {
                        Log.d("ButtonTouchTag", "Button 1: DOWN");
                    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                        Log.d("ButtonTouchTag", "Button 1: MOVE");
                    } else if (event.getAction() == MotionEvent.ACTION_UP) {
                        Log.d("ButtonTouchTag", "Button 1: UP");
                    }
    
                    return true;
                }
            });
    
            button2.setOnTouchListener(new View.OnTouchListener()
    
            {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN) {
                        Log.d("ButtonTouchTag", "Button 2: DOWN");
                    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                        Log.d("ButtonTouchTag", "Button 2: MOVE");
                    } else if (event.getAction() == MotionEvent.ACTION_UP) {
                        Log.d("ButtonTouchTag", "Button 2: UP");
                    }
                    return false;
                }
            });
    
        }
    
    }
    
    此代码记录以下信息:

    • 按钮1:向下
    • 按钮1:移动
    • 按钮1:移动
    • 按钮1:移动
    • 按钮1:移动
    • 按钮1:向上
    正如您所看到的,按钮2不是触摸事件

    问题:如何按下第一个按钮,释放第二个按钮,并在第二个按钮上获取触摸事件

     button2.setOnTouchListener(new View.OnTouchListener()
    
            {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN) {
                        Log.d("ButtonTouchTag", "Button 2: DOWN");
                    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                        Log.d("ButtonTouchTag", "Button 2: MOVE");
                    } else if (event.getAction() == MotionEvent.ACTION_UP) {
                        Log.d("ButtonTouchTag", "Button 2: UP");
                    }
                    return true;
                }
            });
    

    它应该返回true。

    我尝试了这个,但没有帮助。我认为布尔值标识是否应该调用onClick方法?你返回的是false而不是true。是检查了我的代码,检查了你的代码。没有区别。我认为问题应该出现在另一个
    按钮2上。setOnTouchListener
    它应该返回true,而u编写的
    返回false