gpt4 book ai didi

Android - 获取计时器小部件的时间

转载 作者:IT王子 更新时间:2023-10-28 23:49:40 25 4
gpt4 key购买 nike

如何从 Chronometer 获取时间?我试过 getText、getFormat、getBase 等,但没有一个可以工作。

示例代码 fragment :

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 创建您自己的版本。 .

alt text

关于Android - 获取计时器小部件的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com