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)谢谢你们两位。我禁用了音效。。我想不出如何避免它,也可以从XML:android:soundEffectsEnabled=“false”