我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始时开始计算。目前,当用户单击按钮从0启动计时器时,它只显示活动开始的时间。以下是相关代码:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startTimer: {
Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
startTime = SystemClock.elapsedRealtime();
timer = (TextView) findViewById(R.id.timerText);
stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer arg0) {
countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60)));
timer.setText(asText);
}
});
stopWatch.start();
break;
}
...
我需要改变什么?
答案 0 :(得分:1)
不确定arg0.getBase是什么,但我认为你想改变 -
countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
到
countUp = (SystemClock.elapsedRealtime() - startTime) / 1000;
因为startTime是单击按钮的时间。
答案 1 :(得分:-1)
你可以添加
StringBuilder builder = new StringBuilder();
if (array.Length > 0)
{
builder.Append(array[0]);
}
for (var i = 1; i < array.Length; ++i)
{
builder.Append(separator);
builder.Append(array[i]);
}
string joined = builder.ToString(); // "a b c"
正好在
之下stopWatch.setBase(startTime);
所以,你的更新代码就像,......
startTime = SystemClock.elapsedRealtime();
希望这会有所帮助..