繁体   English   中英

Android-使用onclick的时间

[英]Android - timing when using onclick

我正在尝试创建一个应用程序,该应用程序在按下按钮时每次都会得到不同的结果。 我正在使用一个名为“ counter”的全局int,它每次都会增加+1。

我的问题是,如果我快速按下按钮几次,它会“跳”到最后。 如何在每台印刷机之间留出空间?

我以为使用handler.postDelayed(Runnable,500); 但我不确定这是否是最佳解决方案。 而且-何时以及如何在代码中使用它?

谢谢。

public class MyMain extends Activity implements OnClickListener {

int clickCounter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_my_main);

    findViewById(R.id.button1).setOnClickListener(this);
    findViewById(R.id.button2).setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.button2:
        clickCounter = 0;
        break;
    case R.id.button1:
        clickCounter++;
        ActionByClick();
        break;
    }
}

private void ActionByClick() {
    // TODO Auto-generated method stub
    if (clickCounter == 1){

    } else if (clickCounter == 2){

    } else if (clickCounter == 3){

    } else if (clickCounter == 4){

    }
}

}

您可以创建一个计时器,该计时器具有一个阈值,该阈值将在您每次按下按钮时检查一次,因此您无法在特定时间内单击它。

例:

     @Override
public void onClick(View v) {
    // Preventing multiple clicks, using threshold of 0.5 second
    if (SystemClock.elapsedRealtime() - mLastClickTime < 500) {
        return;
          }
    mLastClickTime = SystemClock.elapsedRealtime();

    ///YOUR BUTTON CLICK HERE
}

if (SystemClock.elapsedRealtime() - mLastClickTime < 500)检查最后一次单击是否已经是0.5秒。

您可以使用以下代码:

@Override
public void onClick(final View v) {

    // do stuff

    // Disable the button when it's clicked
    v.setEnabled(false);

    v.postDelayed(new Runnable(){
        @Override
        public void run() {

            // Enable it after 500ms
            v.setEnabled(true);

        }
    }, 500);   
}

这样,当单击按钮时,它将变为禁用状态,并在500ms后返回到启用状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM