Android:计时器从活动开始而不是从按钮单击开始

时间:2012-12-23 05:00:24

标签: android

我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始时开始计算。目前,当用户单击按钮从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;
        }
...

我需要改变什么?

2 个答案:

答案 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();

希望这会有所帮助..