循环倒数计时器X次,

时间:2019-01-29 17:44:20

标签: android

我正在尝试将倒数计时器循环特定次数,但是我不确定应该在哪里添加for循环...当前正在尝试执行间隔计时器功能(我知道有一种方法可以通过Handler进行操作,但我仍然是一个初学者,对如何使用该处理程序感到困惑)

我尝试将其添加到'.start'和StartTimer函数中,但倒数时间仍保持为0。如果我还是个初学者,如果能给予任何帮助,那就太好了。

package com.example.bushykai.myapplication;

import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Timer extends AppCompatActivity {
private static final long START_TIME_IN_MILLIS=10000;
private int sets = 3;
private TextView textViewCountdown;
private Button buttonStartPause;
private Button buttonReset;

private CountDownTimer countDownTimer;

private boolean timerRunning;

private long timeLeftInMillis = START_TIME_IN_MILLIS;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_timer);

    textViewCountdown = findViewById(R.id.countdownTimer);
    buttonStartPause = findViewById(R.id.startPause);
    buttonReset= findViewById(R.id.reset);

    buttonStartPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (timerRunning) {
                pauseTimer();
            }

            else {

                    startTimer();


            }
        }
    });

    buttonReset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            resetTimer();
        }
    });

    updateCountDownText();
}

private void pauseTimer() {
    countDownTimer.cancel();
    timerRunning = false;
    buttonStartPause.setText("Start");
    buttonReset.setVisibility(View.VISIBLE);
}

private void startTimer() {
    countDownTimer = new CountDownTimer(timeLeftInMillis, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {

            timeLeftInMillis = millisUntilFinished;
            updateCountDownText();
        }

        @Override
        public void onFinish() {
            timerRunning = false;
            buttonStartPause.setText("Start");
            buttonStartPause.setVisibility(View.INVISIBLE);
            buttonReset.setVisibility(View.VISIBLE);

        }
    }.start();
    timerRunning = true;
    buttonStartPause.setText("Pause");
    buttonReset.setVisibility((View.INVISIBLE));

}

private void resetTimer() {

    timeLeftInMillis = START_TIME_IN_MILLIS;
    updateCountDownText();
    buttonReset.setVisibility(View.INVISIBLE);
    buttonStartPause.setVisibility(View.VISIBLE);

}

private void updateCountDownText() {
    int minutes = (int) (timeLeftInMillis / 1000 ) / 60;
    int seconds = (int) (timeLeftInMillis / 1000 ) % 60;

    String timeLeftFormatted = String.format("%02d:%02d", minutes, seconds);

    textViewCountdown.setText(timeLeftFormatted);

}
}

1 个答案:

答案 0 :(得分:2)

您必须将Runnable Handler添加到下面的类try代码中,并使用倒数计时器进行修改

public Handler timerHandler = new Handler();
public Runnable timerRunnable = new Runnable() {

    @Override
    public void run() {
        //show alert or DO Whatever
    }
    };


public void timerStart() {
    timerStop();
    timerHandler.postDelayed(timerRunnable, Constants.TIMER_TIME_OUT);
}

public void timerStop() {
    timerHandler.removeCallbacks(timerRunnable);
}