Как изменить формат хронометра?

Одна из моих проблем заключается в изменении формата хронометра в android. У меня проблема, что хронометр показывает свое время в формате 00:00, и я хочу, чтобы он появился в формате 00:00:00. Кто-нибудь знает ответ?

Ответы

Ответ 1

Я работал над таймером обратного отсчета, который использовал этот формат, но это было для HH: MM: SS. Это то, что вы ищете или ищете MM: SS: миллисекунды. Вы можете работать с этим кодом и подсчитывать его с нуля, а не вниз. Ссылка здесь - Таймер обратного отсчета форматирования с 00:00:00 не работает. Отображается 00:00:00 до паузы, затем отображается оставшееся время. и это может помочь - Показывать миллисекунды с Android Chronometer

Ответ 2

Вот простое и умное решение для формата времени 00:00:00 в хронометре в android

Chronometer timeElapsed  = (Chronometer) findViewById(R.id.chronomete);
timeElapsed.setOnChronometerTickListener(new OnChronometerTickListener(){
        @Override
            public void onChronometerTick(Chronometer cArg) {
            long time = SystemClock.elapsedRealtime() - cArg.getBase();
            int h   = (int)(time /3600000);
            int m = (int)(time - h*3600000)/60000;
            int s= (int)(time - h*3600000- m*60000)/1000 ;
            String hh = h < 10 ? "0"+h: h+"";
            String mm = m < 10 ? "0"+m: m+"";
            String ss = s < 10 ? "0"+s: s+"";
            cArg.setText(hh+":"+mm+":"+ss);
        }
    });
    timeElapsed.setBase(SystemClock.elapsedRealtime());
    timeElapsed.start();

Ответ 3

Я имел дело с той же проблемой. Самый простой способ достичь этой цели - переопределить метод updateText для хронометра, но, к сожалению, это частный метод, поэтому я сделал это следующим образом:

    mChronometer.setText("00:00:00");
    mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {

        @Override
        public void onChronometerTick(Chronometer chronometer) {
            CharSequence text = chronometer.getText();
            if (text.length()  == 5) {
                chronometer.setText("00:"+text);
            } else if (text.length() == 7) {
                chronometer.setText("0"+text);
            }
        }
    });

Я знаю, что было бы лучше написать собственный виджет, но для небольшого проекта он может быть подходящим.

Формат настройки на хронометре позволяет форматировать текст, окружающий фактическое время и время, отформатирован с использованием DateUtils.formatElapsedTime.

Надеюсь, что это поможет.

Ответ 4

Метод хронометров setFormat используется для добавления форматированного текста, например:

"Время% s от начала"

Результат

"Время 00:00 с начала"

В хронометре вы не можете выбирать между форматами HH: MM: SS или MM: SS.

Ответ 5

            You can use this code. Setting the format and removing it


     //Removing the format (write this in oncreate)
         if(mChronometerformat){
        mSessionTimeChro.setOnChronometerTickListener(new OnChronometerTickListener() {
                                                @Override
                                                public void onChronometerTick(Chronometer chronometer) {
                                                    if (chronometer.getText().toString()
                                                            .equals("00:59:59"))
                                                        chronometer.setFormat(null);

                                            }
                                        });}


    // Setting the format


 mSessionTimeChro.setBase(SystemClock.elapsedRealtime());
                if (diffHours == 0) {
                    mSessionTimeChro.setFormat("00:%s");
                    mChronometerformat = true;
                }
                mSessionTimeChro.start();

Ответ 6

Почему просто не использовать класс Date?

timeElapsed.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
    @Override
    public void onChronometerTick(Chronometer cArg) {
        long time = SystemClock.elapsedRealtime() - cArg.getBase();
        Date date = new Date(time);
        DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
        String dateFormatted = formatter.format(date);
        cArg.setText(dateFormatted);
    }
});

Простой и чистый