好的,所以我有一个倒数计时器,我的应用程序要求用户多次点击一个按钮,但计时器开始按下该按钮。我的问题是:
我有一个10秒的倒数计时器,从按下按钮开始,但不是只是继续下降到0,每次用户点击按钮时它都会重新开始。当用户第一次点击它时,我该怎么做呢,它会继续倒计时?
我的代码:
private Button tapBtn;
TextView cm;
tapBtn = (Button) findViewById(R.id.Tap);
cm = (TextView) findViewById(R.id.Timer);
final CountDownTimer aCounter = new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
cm.setText("Time Left: " + millisUntilFinished / 1000);
}
public void onFinish() {
cm.setText("Time's Up!");
}
};
aCounter.cancel();
tapBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
scr = scr - 1;
TextView Score = (TextView) findViewById(R.id.Score);
Score.setText(String.valueOf(scr));
aCounter.start();
}
});
}
答案 0 :(得分:1)
你是否试图这样做,如果用户已经启动了计时器,后续按下按钮不会从第一次点击重启?如果是这样,你应该做的只是在你的onclick上放一个if语句来检查计时器是否仍在倒计时,即检查并查看计数器上当前时间是否大于0。
编辑:这是代码
final CountDownTimer aCounter = new CountDownTimer(10000, 1000) {
private long timeLeft;
public long getTimeLeft() {
return timeLeft;
}
public void onTick(long millisUntilFinished) {
timeLeft = millisUntilFinished / 1000;
cm.setText("Time Left: " + timeLeft);
}
public void onFinish() {
cm.setText("Time's Up!");
}
};
aCounter.cancel();
tapBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (aCounter.getTimeLeft() == 0) {
scr = scr - 1;
TextView Score = (TextView) findViewById(R.id.Score);
Score.setText(String.valueOf(scr));
aCounter.start();
}
}
});
}
答案 1 :(得分:0)
这样做的一种方法是创建一个在第一次点击时设置的标志,并让onclick事件在第一次单击时翻转标志,并将计时器启动放在if语句中,只有当标志没有时才会出现没定。