Android onTouch()听起来像双击

Android onTouch()听起来像双击,android,onclick,onclicklistener,touch-event,ontouch,Android,Onclick,Onclicklistener,Touch Event,Ontouch,我已经实现了onTouch,使我的布局可以作为按钮使用。 除了触摸按钮时有时会发出两次咔哒声之外,这一切都非常有效。 我试图调试它,但我无法理解是什么问题 以下是onTouch代码: button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.d(TAG, "onTouch "+eve

我已经实现了
onTouch
,使我的布局可以作为按钮使用。
除了触摸按钮时有时会发出两次咔哒声之外,这一切都非常有效。
我试图调试它,但我无法理解是什么问题

以下是
onTouch
代码:

button.setOnTouchListener(new OnTouchListener() 
{
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        Log.d(TAG, "onTouch "+event.getAction());
        switch (event.getAction())
        {
            case MotionEvent.ACTION_HOVER_ENTER:
                v.setBackgroundResource(R.color.main_menu_buttons_bg_pressed);
                break;
            case MotionEvent.ACTION_HOVER_EXIT:
                v.setBackgroundResource(R.color.background_color);
                break;
            case MotionEvent.ACTION_DOWN:
                v.setBackgroundResource(R.color.main_menu_buttons_bg_pressed);
                break;
            case MotionEvent.ACTION_UP:
                Log.d(TAG, "on click");
                v.performClick();
                v.setBackgroundResource(R.color.background_color);
                break;
            default:
                // empty    
        }
        return false;
    }
});
如您所见,我添加了日志消息,通常会打印:

onTouch 0
onTouch 2
onTouch 2
onTouch 2
onTouch 2
onTouch 1
on click

因此,这应该是正常的,但仍然会听到两次咔哒声(有时,无法准确确定何时发生)

这是
v.performClick()的预期行为du,当视图还有一个
OnClikListener
:From GrepCode

2480    public boolean More ...performClick() {
2481        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
2482
2483        if (mOnClickListener != null) {
2484            playSoundEffect(SoundEffectConstants.CLICK);
2485            mOnClickListener.onClick(this);
2486            return true;
2487        }
2488
2489        return false;
2490    }

那么我如何避免它呢?在按钮的实例上尝试
button.setSoundEffectsEnabled(false)android:soundEffectsEnabled=“false”