BatCave1997
7/23/2018 - 4:59 AM

Timer in android

Simple timer using seekbar and countdowntimer

CountDownTimer countDownTimer;
boolean counterIsActive = false;

public void StartTimer(View view) {
        seekBar.setVisibility(View.INVISIBLE);
        button.setText("Stop!");
        if(counterIsActive){
            seekBar.setVisibility(View.VISIBLE);
            button.setText("Go!");
            countDownTimer.cancel();
            counterIsActive = false;
        }
        else {
            counterIsActive = true;
            countDownTimer = new CountDownTimer(time, 1000) {

                @Override
                public void onTick(long millisUntilFinished) {
                    Log.i("Timer run", "Timer has started");

                    if (millisUntilFinished / 1000 < 60) {
                        int y = (int) millisUntilFinished / 1000;
                        if (y < 10) {
                            textView.setText("00:0" + y);
                            y--;
                        } else {
                            textView.setText("00:" + y);
                            y--;
                        }
                    } else {
                        String secString;
                        int min = (int) (millisUntilFinished / 1000) / 60;
                        int sec = (int) (millisUntilFinished / 1000) - (min * 60);
                        if (sec < 10) {
                            secString = "0" + Integer.toString(sec);
                        } else {
                            secString = Integer.toString(sec);
                        }
                        if (secString == "0") {
                            secString = "00";
                        }
                        if (min == 10) {
                            textView.setText(Integer.toString(min) + ":" + secString);
                        } else {
                            textView.setText("0" + Integer.toString(min) + ":" + secString);
                        }

                    }
                }

                @Override
                public void onFinish() {
                    Toast.makeText(MainActivity.this, "Timer has completed", Toast.LENGTH_SHORT).show();
                    button.setVisibility(View.VISIBLE);
                    seekBar.setVisibility(View.VISIBLE);
                }
            };
            countDownTimer.start();
        }
    
    int max = 600;
    int time ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        seekBar = findViewById(R.id.seekBar);

        seekBar.setMax(max);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                time = progress*1000;
                if(progress < 60){
                    int y = progress;
                    if(y<10){
                        textView.setText("00:0"+y);
                    }else{
                        textView.setText("00:"+y);
                    }
                }else {
                    int x = Math.abs(progress / 60);
                    int y = progress % 60;
                    if (y < 10) {
                        textView.setText(x + ":0" + y);
                    } else {
                        textView.setText(x + ":" + y);
                    }

                }
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }