Chronometer with H:MM:SS

后端 未结 3 1405
陌清茗
陌清茗 2021-01-12 16:15

How to display Chronometer with H:MM:SS? I read MM:SS and H:MM:SS are displaying by default.I found only for MM:SS.

Here is my code for MM:SS with start and stop but

3条回答
  •  醉话见心
    2021-01-12 16:51

    layout.xml

    
    
    
    
    
    

    In activity

    import java.util.Calendar;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.text.format.DateFormat;
    import android.widget.Chronometer;
    import android.widget.Chronometer.OnChronometerTickListener;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        TextView tvData;
        Chronometer chronometer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tvData = (TextView) findViewById(R.id.tv_data);
            chronometer = (Chronometer) findViewById(R.id.chronometer);
    
            startChronometer();
    
            chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
                public void onChronometerTick(Chronometer cArg) {
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, 0);
                    calendar.set(Calendar.MINUTE, 0);
                    calendar.set(Calendar.SECOND, 0);
                    calendar.set(Calendar.MILLISECOND, getCurrentMiliSecondsOfChronometer());
                    tvData.setText(DateFormat.format("HH:mm:ss", calendar.getTime()));
                }
            });
        }
    
        private int getCurrentMiliSecondsOfChronometer() {
            int stoppedMilliseconds = 0;
            String chronoText = chronometer.getText().toString();
            String array[] = chronoText.split(":");
            if (array.length == 2) {
                stoppedMilliseconds = Integer.parseInt(array[0]) * 60 * 1000 + Integer.parseInt(array[1]) * 1000;
            } else if (array.length == 3) {
                stoppedMilliseconds =
                        Integer.parseInt(array[0]) * 60 * 60 * 1000 + Integer.parseInt(array[1]) * 60 * 1000
                                + Integer.parseInt(array[2]) * 1000;
            }
            return stoppedMilliseconds;
        }
    
        private void startChronometer() {
            int stoppedMilliseconds = getCurrentMiliSecondsOfChronometer();
            chronometer.setBase(SystemClock.elapsedRealtime() - stoppedMilliseconds);
            chronometer.start();
        }
    }
    

提交回复
热议问题