【问题标题】:How to press on first button, release on second button and get touch events of second button?如何按下第一个按钮,释放第二个按钮并获取第二个按钮的触摸事件?
【发布时间】:2017-05-26 07:31:34
【问题描述】:

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

  1. 我按下按钮 1
  2. 然后我将手指移到按钮 2
  3. 我松开按钮 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 没有获得触摸事件。

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

【问题讨论】:

    标签: android button ontouchlistener


    【解决方案1】:
     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 方法。
    • 你检查你的代码了吗?你返回的是假而不是真。
    • 是的,检查了我的代码,检查了你的代码。没有区别。我认为问题应该出在另一个上
    • button2.setOnTouchListener 它应该返回真并且你写了return false;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2017-08-06
    • 1970-01-01
    • 2023-03-22
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多