用于按下和释放按钮的监听器

时间:2012-08-02 14:02:14

标签: android view

如果按下并释放Button,我该如何倾听?

3 个答案:

答案 0 :(得分:73)

您可以使用onTouchListener

view.setOnTouchListener(new View.OnTouchListener() {        
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // PRESSED
                return true; // if you want to handle the touch event
            case MotionEvent.ACTION_UP:
                // RELEASED
                return true; // if you want to handle the touch event
        }
        return false;
    }
});

答案 1 :(得分:5)

fiddler给出的答案对于通用视图是正确的。

对于Button,您应该从触摸处理程序始终返回false

button.setOnTouchListener(new View.OnTouchListener() {      
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // PRESSED
                break;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
                // RELEASED
                break;
        }
        return false;
    }
});

如果您返回true,则会绕过按钮的常规触摸处理。这意味着您将失去按下按钮和触摸波纹的视觉效果。此外,Button#isPressed()会在实际按下按钮时返回false

按钮的常规触摸处理功能可确保您即使在返回false时也能收到后续活动。

答案 2 :(得分:4)

onTouchListener正是您要找的。

您需要使用正确的MotionEvent

这将允许您处理不同类型的“触摸”。