Android 计时器能否将 90 分钟显示为 90:00 而不是 1:30:00

Can Android Chronometer show 90 minutes as 90:00 NOT 1:30:00

我正在开发一个显示 android.widget.Chronometer 计时器的 Android 应用程序。

因为这是一个与体育相关的应用程序,我需要计时器将 90 分钟显示为 90:00 而不是 01:30:00。

创建自定义 Chronometer 是我唯一的选择吗?

定义控件实例

Chronometer chrono;
Button btnStart;
Button btnStop;
TextView txt;

还有一些变量

long elapsedTime=0;
String currentTime="";
long startTime=SystemClock.elapsedRealtime();
Boolean resume=false;

布尔标志区分是第一次启动 Chronometer 还是在暂停后恢复它

现在要处理每个按钮点击事件

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
chrono=(Chronometer)findViewById(R.id.chrono);
btnStart=(Button)findViewById(R.id.btnStart);
btnStop=(Button)findViewById(R.id.btnStop);
btnReset=(Button)findViewById(R.id.btnReset);
txt=(TextView)findViewById(R.id.txt);

public void onClick(View v) {
  // TODO Auto-generated method stub
  switch(v.getId())
  {
  case R.id.btnStart:
   btnStart.setEnabled(false);
   btnStop.setEnabled(true);
   if(!resume)
   {
    chrono.setBase(SystemClock.elapsedRealtime());
    chrono.start();
   }
   else
   {

    chrono.start();
   }

   break;
  case R.id.btnStop:
   btnStart.setEnabled(true);
   btnStop.setEnabled(false);
   chrono.stop();
   chrono.setText(currentTime);
   resume=true;
   btnStart.setText("Resume");
   break;
  case R.id.btnReset:

   chrono.stop();
   chrono.setText("00:00");
   resume=false;
   btnStop.setEnabled(false);
   break;
  }
 }


chrono.setOnChronometerTickListener(new OnChronometerTickListener()
        {

   public void onChronometerTick(Chronometer arg0) {
    // TODO Auto-generated method stub

    if(!resume)
    {

     long minutes=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)/60;
     long seconds=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)%60;
     currentTime=minutes+":"+seconds;
     arg0.setText(currentTime);
     elapsedTime=SystemClock.elapsedRealtime();
    }
    else
    {

     long minutes=((elapsedTime-chrono.getBase())/1000)/60;
     long seconds=((elapsedTime-chrono.getBase())/1000)%60;
     currentTime=minutes+":"+seconds;
     arg0.setText(currentTime);
     elapsedTime=elapsedTime+1000;
    }

onChronometerTick 方法处理每秒发生的 Chronometer tick 事件

chrono.setOnChronometerTickListener(new OnChronometerTickListener()
        {

   public void onChronometerTick(Chronometer arg0) {
    // TODO Auto-generated method stub

    if(!resume)
    {

     long minutes=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)/60;
     long seconds=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)%60;
     currentTime=minutes+":"+seconds;
     arg0.setText(currentTime);
     elapsedTime=SystemClock.elapsedRealtime();
    }
    else
    {

     long minutes=((elapsedTime-chrono.getBase())/1000)/60;
     long seconds=((elapsedTime-chrono.getBase())/1000)%60;
     currentTime=minutes+":"+seconds;
     arg0.setText(currentTime);
     elapsedTime=elapsedTime+1000;
    }