我有一个活动,在其中有一个按钮,当单击此按钮时,我想为TextView设置一些值,所以我使用了onClickListening,它可以正常工作:
ButtonPlus.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
ponts = ponts + 1;
resultadoTextView.setText(Integer.toString(ponts));
}
});
但是问题是我想在不断按下按钮的同时继续增加此textView的值,所以我尝试使用OnTouchLister:
ButtonPlus.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ponts = ponts + 1;
resultTextView.setText(Integer.toString(ponts));
}
});
问题是,当我快速单击按钮时,它会使TextView的值增加太多,并且我希望在按下按钮一段时间后才能激活onTouchListener。
有什么帮助吗?
最佳答案
使用一些额外的计数器。
int additionalCounter = 0;
ButtonPlus.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
++additionalCounter;
if (additionalCounter % X == 0) {
ponts = ponts + 1;
resultTextView.setText(Integer.toString(ponts));
}
}
});
您可以根据需要设置
X
,即将其设置为5
会使触摸事件的运行速度降低5
倍。