Android - OnTouchListener()过早触发

时间:2014-07-04 15:43:20

标签: java android click ontouchlistener

我有一个活动,我有一个按钮,当点击这个按钮我想设置一个带有一些值的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在按下按钮一段时间后才会被激活。

有什么帮助吗?

2 个答案:

答案 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次。