按钮上的单击,按下和释放事件

Nit*_*tri 8 android ontouchlistener onclicklistener

如何检测按钮的单击,按下和释放状态.我想在这些状态下执行不同的功能.点击我想调用function1,按下我要调用function2,接收时我想调用function3.

我们可以使用检测点击状态View.OnClickListener.我们可以使用View.OnTouchListener和处理ACTION_DOWN和检测Button的Pressed和Released状态ACTION_UP.我能够单独检测这些状态,但不能一起检测.

下面是OnCLickListener的代码.

button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            System.out.println(" clicked ");
        }
    });
Run Code Online (Sandbox Code Playgroud)

下面是OnTouchListener的代码.

button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    System.out.println(" pressed ");
                    return true;
                case MotionEvent.ACTION_UP:
                    System.out.println(" released ");
                    return true;
            }
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

当我在Button上设置单击并触摸侦听器时,Click事件永远不会被调用.相反,我接受了压制和释放状态.

我怎样才能一起处理这三个州?

编辑:

我添加了我使用的OnClickListener和OnTouchListener代码.

Pra*_*nik 13

更改return true;内部case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_UP:return false;break;


The*_*Fox 10

容易,因为ButtonView:

    button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                // Pressed
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                // Released
            }
            return true;
        }
    });
Run Code Online (Sandbox Code Playgroud)