0

我正在实现一个倒数计时器,并遵循 StackoverFlow 中的一个示例。在我的版本中,我将按下开始按钮开始计数,按下停止按钮停止。但问题是我进入活动后立即开始计数。知道如何按照我想要的方式制作吗?

public class StartActivity extends Activity
{
    Button beginRecordingButton;
    TextView timer;
    long startTime;
    long countup;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {super.onCreate(savedInstanceState);
        setContentView(R.layout.startactivity);
        beginRecordingButton = (Button) findViewById(R.id.BeginRecording);
        timer = (TextView) findViewById(R.id.timer);
        final Chronometer stopwatch = (Chronometer) findViewById(R.id.chrono);
        startTime = SystemClock.elapsedRealtime();
        stopwatch.setOnChronometerTickListener(listener);


        beginRecordingButton.setOnClickListener(new OnClickListener()
        {
            int counter = 0;


            public void onClick(View v)
            {

                if (counter % 2 == 0)
                {


                    stopwatch.start();
                    beginRecordingButton.setText("Stop");
                }
                if (counter % 2 == 1)
                {

                    stopwatch.stop();
                    beginRecordingButton.setText("Begin");
                }
                counter++;  //counter is used for knowing it is stop or begin

            }
        });
    }

    private OnChronometerTickListener listener = new OnChronometerTickListener()
    {

        public void onChronometerTick(Chronometer chronometer)
        {
            String text;
            countup = (SystemClock.elapsedRealtime() - chronometer.getBase())/1000;
            if(countup%60<10)
            {
                 text = (countup/60) + ":0" + (countup%60);
            }
            else
            {
                 text = (countup/60) + ":" + (countup%60);
            }

            timer.setText(text);
        }
    };
}
4

1 回答 1

0

我通过执行以下操作找到了解决方案:

long test;

test = (SystemClock.elapsedRealtime() - stopwatch.getBase())/1000;
Log.i(TAG, = (SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000 - test;

basically String.valueOf(test));
stopwatch.start();

计数的想法是,如果我按下开始按钮,则减去经过的时间,使其从 0 开始

于 2012-07-21T17:54:47.423 回答