倒数计时器显示敬酒的一半时间

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();
}