倒数计时器显示敬酒的一半时间
Countdown timer display a toast half time
我正在尝试实现类似于倒数计时器的功能,它会在所选分钟数的一半时显示一条消息。比如我设置6分钟,当倒计时到3分钟时,它会显示祝酒词,然后继续滴答。
没用
我曾多次问过这个问题,但我被要求澄清我的问题,所以我希望它能解决。
// 6 min =360,000 millisecond
final long millis=360000;
new CountDownTimer(millis,1000) {
@Override
public void onTick(long millisUntilFinished) {
long halftime =millis/2;
if (millisUntilFinished == halftime){
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFinish() {}
}.start();
嗯。我想我最近遇到了类似的问题。
您将滴答速率设置为 1 秒 == 1000 毫秒,但我认为 onTick() 方法可能有一些最小的时间偏移(例如每个滴答 1 或 2 毫秒)。因此,您可能会错过几毫秒的中场休息时间。
我有一些想法可以给你。
1) 您可以提前计算中场休息时间,因此不会按每个刻度计算。并将其从 onTick() 主体中删除。
final long millis=360000;
long halftime =millis/2;
2) 您可以检查半场时间是否有余量,例如半场时间:
if (millisUntilFinished + 500 > halftime && millisUntilFinished - 500 < halftime) {
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}
我正在尝试实现类似于倒数计时器的功能,它会在所选分钟数的一半时显示一条消息。比如我设置6分钟,当倒计时到3分钟时,它会显示祝酒词,然后继续滴答。
没用
我曾多次问过这个问题,但我被要求澄清我的问题,所以我希望它能解决。
// 6 min =360,000 millisecond
final long millis=360000;
new CountDownTimer(millis,1000) {
@Override
public void onTick(long millisUntilFinished) {
long halftime =millis/2;
if (millisUntilFinished == halftime){
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFinish() {}
}.start();
嗯。我想我最近遇到了类似的问题。 您将滴答速率设置为 1 秒 == 1000 毫秒,但我认为 onTick() 方法可能有一些最小的时间偏移(例如每个滴答 1 或 2 毫秒)。因此,您可能会错过几毫秒的中场休息时间。
我有一些想法可以给你。
1) 您可以提前计算中场休息时间,因此不会按每个刻度计算。并将其从 onTick() 主体中删除。
final long millis=360000;
long halftime =millis/2;
2) 您可以检查半场时间是否有余量,例如半场时间:
if (millisUntilFinished + 500 > halftime && millisUntilFinished - 500 < halftime) {
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}