如何按第一个按钮,在第二个按钮上释放并获得第二个按钮的触摸事件?

时间:2017-05-26 07:31:35

标签: android button ontouchlistener

我有2个按钮。这就是我在做的事情:

  1. 我按下按钮1
  2. 然后我将手指移动到按钮2
  3. 我在按钮2上发布
  4. enter image description here

    我为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未触及事件。

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

1 个答案:

答案 0 :(得分:0)

 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。