倒数计时器而非计数

时间:2018-03-04 20:09:53

标签: android

我开始为足球比赛写倒数计时器。下面的代码一次增加1秒到30分钟。我怎么能倒计时而不是数数;

//Countdown clock button
    Button counterBtn = (Button) view.findViewById(R.id.matchCountDownBtn);
    counterBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            new CountDownTimer(1800000, 1000){
                public void onTick(long millisUntilFinished){
                    Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
                    counterBtn.setText(String.valueOf(counter));
                    counter++;
                }
                public  void onFinish(){
                    Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
                    counterBtn.setText("FULL TIME");
                }
            }.start();
        }
    });

由于CountDownTimer的millisInFuture似乎在结束时间开始,我很困惑这可以倒计时而不是计数。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

millisUntilFinished表示从调用start()到倒计时结束并调用onFinish()之后的未来毫秒数。更有意义的是,您将其用作显示剩余时间的实际值,而不是使用counter

考虑到这一点,onTick()方法可以修改如下以显示倒计时 -

public void onTick(long millisUntilFinished){
    Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
    counterBtn.setText("seconds remaining: " + millisUntilFinished / 1000);
}

答案 1 :(得分:0)

counter--;

你在找什么?

答案 2 :(得分:0)

完成了工作;

    Button counterBtn = (Button) view.findViewById(R.id.matchCountDownBtn);
    counterBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            new CountDownTimer(70000, 1000){
                public void onTick(long millisUntilFinished){
                    long l = millisUntilFinished / 1000;
                    int i = (int) l;
                    Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
                    counterBtn.setText(secondsToString(i));
                }
                public  void onFinish(){
                    Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
                    counterBtn.setText("FULL TIME");
                }
            }.start();
        }
    });

我用于格式化的方法是;

private String secondsToString(int pTime) {
    return String.format("%02d:%02d", pTime / 60, pTime % 60);
}