Android计时表可以显示90分钟为90:00而不是1:30:00

时间:2016-10-19 17:45:53

标签: android widget chronometer

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

由于这是一项与运动相关的应用程序,我需要计时器显示90分钟为90:00而不是01:30:00。

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

1 个答案:

答案 0 :(得分:1)

定义控件的实例

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

和一些变量

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

布尔标志区分第一次启动计时器或暂停后恢复计时器

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

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;
    }