允许按钮在Android中为点数提供一定的时间

时间:2011-10-25 19:12:39

标签: java android button

我只看到有关如何在一定时间后做某事的文章,但我想知道如何在Android中做一些事情。

    public void buttonClick(View v) {

        currentUser.changeScore(10);

        TextView tv = (TextView) findViewById(R.id.score);
        tv.setText("Score: " + currentUser.getScore());

    }

我希望用户能够在事件发生后按下按钮并获得10秒的积分。在那10秒之后,如果按下按钮,我希望用户失去10分。

2 个答案:

答案 0 :(得分:3)

这很简单。每次事件发生时,设置一个变量,如下所示:

long positivePointEndTime = 0;

// In your event handler...
positivePointEndTime = System.currentTimeMillis() + 10000;

// Then in the button click handler
int scoreChange = System.currentTimeMillis() < positivePointEndTime ? 10 : -10;
currentUser.changeScore(scoreChange);

在这个时间间隔内,你不是真的想要定期更改 - 事件只是设置一个新的时间点作为点击“好”的边界按钮。不需要计时器或类似的东西。

(为了可测试性,您可能希望使用依赖注入Clock类型或类似的东西来提供“当前时间”功能,但基本原理是相同的。)

答案 1 :(得分:0)

您可以使用计时器:

timerIsOn = true; // timerIsOn is boolean variable, must be visible for button click handler
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        timerIsOn = false;
    }
};
Timer timer = new Timer();
timer.schedule(task, 10000);

然后按钮点击处理程序将是:

public void buttonClick(View v) {
    if (timerIsOn) {
        currentUser.changeScore(10);
    } else {
        // reduce score
    }
    TextView tv = (TextView) findViewById(R.id.score);
    tv.setText("Score: " + currentUser.getScore());
}