如何从天文台表获取时间?我尝试了 getText、getFormat、getBase 等,但它们都不起作用。
示例代码片段:
Chronometer t = (Chronometer)findViewById(R.id.toptime);
long time = SystemClock.elapsedRealtime()-t.getBase();
Log.d(null,"Was: "+time); //time is not the proper time for some reason - it is a random number between 0 and 50
t.setBase(SystemClock.elapsedRealtime());
t.start();
如果您查看 Chronometer 类的源代码,您会发现它不会将经过的时间存储在字段中,而是在每次需要更新显示时在内部计算它。
然而,在您自己的代码中执行相同的操作相对容易:
long elapsedMillis = SystemClock.elapsedRealtime() - chronometerInstance.getBase();
这假设您已经启动了时钟,如下所示:
chronometerInstance.setBase(SystemClock.elapsedRealtime());
chronometerInstance.start();
这是一个完整的示例:
public class ChronoExample extends Activity {
Chronometer mChronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
mChronometer = new Chronometer(this);
layout.addView(mChronometer);
Button startButton = new Button(this);
startButton.setText("Start");
startButton.setOnClickListener(mStartListener);
layout.addView(startButton);
Button stopButton = new Button(this);
stopButton.setText("Stop");
stopButton.setOnClickListener(mStopListener);
layout.addView(stopButton);
Button resetButton = new Button(this);
resetButton.setText("Reset");
resetButton.setOnClickListener(mResetListener);
layout.addView(resetButton);
setContentView(layout);
}
private void showElapsedTime() {
long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();
Toast.makeText(ChronoExample.this, "Elapsed milliseconds: " + elapsedMillis,
Toast.LENGTH_SHORT).show();
}
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.start();
showElapsedTime();
}
};
View.OnClickListener mStopListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.stop();
showElapsedTime();
}
};
View.OnClickListener mResetListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.setBase(SystemClock.elapsedRealtime());
showElapsedTime();
}
};
}
关于 Chronometer 的一个有点令人困惑的事情是,你不能真正将它用作启动、停止和重新启动的秒表。当它运行时,它总是会显示自您上次重置以来经过的时间,无论您在此期间停止了多少次、持续了多长时间。当它停止时,它只是停止更新显示。
如果您需要像秒表这样的东西,您必须将 Chronometer 子类化,或者使用以下命令创建您自己的版本source.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)