我有一个活动,在其中有一个按钮,当单击此按钮时,我想为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倍。

10-04 22:38