java - 延长倒计时器的时间

标签 java android countdowntimer

为什么此代码不起作用?

此代码应将倒计时器延长到 10 秒(每次当点为 20 、 40 、 60 时)等。但是当我启动它并且我的分数为 20 时,它会在 TextView 中显示正确的时间值。但是然后它在 1 秒内消失,倒计时器得到旧值并继续。有人有想法吗?

int bonus_time = 1 , sec = 10000 , point == 0; 

points_timer =new CountDownTimer(sec,1000) {

        @Override
        public void onTick(long millisUntilFinished) 
        {
                    if ( point == (bonus_time * 20))
                    {
                       ++bonus_time;
                       millisUntilFinished += 10000;
                       sec += 10000;
                    }

        ++point;
        }

        @Override
        public void onFinish() 
        {
          bonus_time = 1;
        }
    };

最佳答案

当您使用 sec 变量创建计时器时,它不会神奇地将两者连接起来,因此当 sec 的值更改时,计时器的时间也会发生变化,它仅在您创建计时器时使用 sec 的值一次。

更改 millisUntilFinished 也是如此,它是您从回调中获取的参数,通过更改其值,您不会执行任何操作。

更改计时器时间的唯一方法是创建一个新计时器。这是我的建议:

// GLOBAL VARIABLES
CountDownTimer points_timer;
int bonus_time = 1 , sec = 10000 , point == 0; 

public void createTimer()
{
    points_timer =new CountDownTimer(sec,1000) {

        @Override
        public void onTick(long millisUntilFinished) 
        {
            sec = millisUntilFinished;

            if ( point == (bonus_time * 20))
            {
                ++bonus_time;
                //millisUntilFinished += 10000;
                sec += 10000;
                createTimer();
            }

            ++point;
        }

        @Override
        public void onFinish() 
        {
            bonus_time = 1;
        }
    };
}

计时器的创建由一个函数包围,每次获得奖金时都会调用该函数,以使用新的值重新创建计时器。

  • 您还应该调用该方法一次来代替之前的代码,以最初创建计时器。

希望这能起作用..

关于java - 延长倒计时器的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029059/

相关文章:

actionscript-3 - AS 3 游戏结束屏幕闪光倒计时器

安卓:CountDownTimer 不工作

javascript - 为什么我的日期对象返回 NaN 值?

java - JSP找不到样式表、图像

java - 如何在Java中以图形方式显示数据?

Android 语音 - 如何在 Android 中阅读文本?

android - ios opengl es 在干净的 C 上渲染纹理

java - 如何使用 REST 将数组作为 POST 参数/有效负载发送到 Android 中的 Web 服务

java - JNI 和 Java : ant calling make or make calling ant?

java - 如果我使用多个 catch block ,为什么 java 没有检测到无法访问的 catch block ?