Android 按钮的软件去抖动
Software debounce for Android buttons
我的 Android 程序中有一个简单的 ImageButton
,单击它时,会在 TextView
中附加一个“0”。长按此按钮时,应该在 TextView
中附加“+”。该程序运行良好,但我遇到了典型的按键弹跳效果。当我长按按钮时,它会附加一个“+”,但当我松开按钮时,它也会附加一个“0”。似乎 Android 在长按结束时注册了第二次单击。我怎样才能消除这个?这是我正在做的事情:
ImageButton button0=(ImageButton)V.findViewById(R.id.imageButtonzero);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
enterNumber.append("0");
}
});
button0.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
enterNumber.append("+");
return false;
}
});
感谢您的帮助!
您需要 return true
在 OnLongClickListener
中通知其他侦听器该事件已被消耗并且不需要进一步采取行动:
button0.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
enterNumber.append("+");
return true;
}
});
信息来源:Android javadoc
我的 Android 程序中有一个简单的 ImageButton
,单击它时,会在 TextView
中附加一个“0”。长按此按钮时,应该在 TextView
中附加“+”。该程序运行良好,但我遇到了典型的按键弹跳效果。当我长按按钮时,它会附加一个“+”,但当我松开按钮时,它也会附加一个“0”。似乎 Android 在长按结束时注册了第二次单击。我怎样才能消除这个?这是我正在做的事情:
ImageButton button0=(ImageButton)V.findViewById(R.id.imageButtonzero);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
enterNumber.append("0");
}
});
button0.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
enterNumber.append("+");
return false;
}
});
感谢您的帮助!
您需要 return true
在 OnLongClickListener
中通知其他侦听器该事件已被消耗并且不需要进一步采取行动:
button0.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
enterNumber.append("+");
return true;
}
});
信息来源:Android javadoc