我有一个活动,我有一个按钮,当点击这个按钮我想设置一个带有一些值的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在按下按钮一段时间后才会被激活。
有什么帮助吗?
答案 0 :(得分:0)
试试此代码。
ButtonPlus.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ponts = ponts + 1;
resultTextView.setText(Integer.toString(ponts));
ButtonPlus.setClickable(false);
//wait 1 second
ButtonPlus.postDelayed(new Runnable() {
@Override
public void run() {
ButtonPlus.setClickable(true);
}
}, 1000);
return false;
}
});
答案 1 :(得分:0)
使用一些额外的计数器。
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
次。