7

私のアプリでは、ストップタイマーウォッチを表示したいと思います。Googleを検索したところ、開発者サイトにクロノメーターというオプションが見つかりました。まるでストップタイマーの時計のようです。

スタートボタンをクリックするとタイマーが開始し、一時停止ボタンをクリックするとタイマーが一時停止する必要があります。スタートをクリックすると、タイマーが停止したときから開始する必要があります。

しかし、このクロノメーターでは、0から開始され、1分10秒で一時停止をクリックすると一時停止されます。5分後にもう一度開始をクリックすると、タイマーは6分10秒からカウントを開始します。一時停止中でもタイマーが実行されています。これを停止して停止時に再開する方法。

以下はクロノメーターの私のコードです

Start = (Button)findViewById(R.id.widget306);
        Start.setOnClickListener(new View.OnClickListener() 
        {   
            @Override
            public void onClick(View v) 
            {
                chronometer.start();                
            }
        });

        Stop = (Button)findViewById(R.id.widget307);
        Stop.setOnClickListener(new View.OnClickListener() 
        {   
            @Override
            public void onClick(View v) 
            {
                  chronometer.stop();
            }
        });
    }
4

4 に答える 4

28

申し訳ありませんが、私は自分で解決策を見つけました。

  1. アクティビティで、メンバー変数 (例: lastPause) を宣言して、最後の一時停止の時間を記録します。

    private long lastPause;

  2. タイマーを開始します (タイマーの変数が crono であると仮定します):

    crono.setBase(SystemClock.elapsedRealtime());

    crono.start();

  3. 次を使用して毎回タイマーを一時停止します。

    lastPause = SystemClock.elapsedRealtime();

    crono.stop();

  4. 以下を使用して毎回タイマーを再開します。

    crono.setBase(crono.getBase() + SystemClock.elapsedRealtime() - lastPause);

    crono.start();

私の目には問題ないように見えるので、まだ精度を正確にテストしていません:]

于 2011-06-26T17:06:25.240 に答える
2

クロノメーターのドキュメントから

カウントアップを停止します。これは、setBase(long) から設定されたベースには影響せず、ビューの表示のみに影響します。

現在、Android開発環境がないため、これ以上調査することはできません:(

編集: それはあなたのコードに基づいたコードですか? setBase停止中の現在時刻に使用されているようです

于 2011-04-21T07:01:47.227 に答える