用不同的时间制作重复的CountDownTimer

问题描述

我正在尝试学习编码。所以我决定做一个小项目,但是我坚持了。

我正在尝试制作CountDownTimer。我有3个不同的时间。例如,第一个是10秒,第二个是5秒,第三个是7秒。因此,我想制作一个从10秒开始计数的应用程序,完成后再从第二个计时器开始计数,然后从第三个计时器开始计数。

public class MainActivity extends AppCompatActivity {

    private Button mStartButton;
    private Button mResetButton;
    private Button mStopButton;

    private TextView mTextViewCountDown;
    private TextView mTextViewCounter;
    private CountDownTimer mCountDownTimer;
    private int countme = 0 ;
    private int [] array = new int[3];


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


    mStartButton = findViewById(R.id.button_start);
    mStopButton = findViewById(R.id.button_stop);
    mResetButton = findViewById(R.id.button_reset);
    mTextViewCountDown = findViewById(R.id.text_view_countdown);
    mTextViewCounter = findViewById(R.id.text_s);

    array[0]=10000;
    array[1]=5000;
    array[2]=70000;


    mStartButton.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            for(int i = 0; i<3; i++){

                mCountDownTimer = new CountDownTimer(array[i],1000) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                         mTextViewCountDown.setText(""+ millisUntilFinished/1000);
                    }

                    @Override
                    public void onFinish() {
                        countme++;
                        if(countme / 3 == 3){
                            mCountDownTimer.cancel();
                        }else{
                            start();
                        } } }.start(); 
                         } 
                         } 
                        }); } }

我认为for循环不适合我的问题。它不会一次增加变量,我猜它会增加一个提示。作为一个初学者,我不知道该怎么办。

解决方法

您无需进行循环尝试,例如:

private void startCountDowntimer(long millis,int count) {
        count ++;
        int finalCount = count;
        new CountDownTimer(millis,1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                mTextViewCountDown.setText(""+ millisUntilFinished/1000);
            }

            @Override
            public void onFinish() {
                if (finalCount == 1) {
                    startCountDowntimer(5000,1);
                } else if (finalCount == 2) {
                    startCountDowntimer(7000,2);
                } else {
                    //all finished
                }
            }
        }.start();
    }

并在按钮上单击:

mStartButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startCountDowntimer(10000,0);
            }
        });