1

アプリのアクティビティにデジタル時計があり、時間と分のみを表示し、秒を表示したくありません。

4

3 に答える 3

2

ここでこの回答を見てください。私が見る限り、あなたは似たような/同じものを探しています:

Android: DigitalClock は秒を削除します

回答の主な内容は次のとおりです。

AnalogClock に似ていますが、デジタルです。秒を表示します。FIXME: 時間/分/秒の個別のビューを実装して、プロポーショナル フォントがレンダリングを揺るがさないようにします。

FIXME から判断すると、DigitalClock の一部を非表示にする機能が最終的に実装される可能性があります。現在、Javadoc またはソース コードの中に、あなたがやりたいことを実行できるものは見つかりませんでした。DigitalClock (または独自の時計の実装全体) を拡張する独自のクラスを作成する場合を除き、目的にかなう場合は、DigitalClock の秒の部分を別の要素でカバーすることができます。

于 2012-06-21T17:36:21.370 に答える
1

システムは、システム クロックに基づいて毎分の正確な開始時にブロードキャスト イベントを送信します。最も信頼できる方法は、次のようにすることです。

BroadcastReceiver _broadcastReceiver;
private final SimpleDateFormat _sdfWatchTime = new SimpleDateFormat("HH:mm");
private TextView _tvTime;

@Override
public void onStart() {
    super.onStart();
    _broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context ctx, Intent intent) {
                if (intent.getAction().compareTo(Intent.ACTION_TIME_TICK) == 0)
                    _tvTime.setText(_sdfWatchTime.format(new Date()));
            }
        };

    registerReceiver(_broadcastReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
}

@Override
public void onStop() {
    super.onStop();
    if (_broadcastReceiver != null)
        unregisterReceiver(_broadcastReceiver);
}

ただし、TextView を事前に (現在のシステム時間に) 初期化することを忘れないでください。UI が 1 分の途中でポップし、TextView は次の分が発生するまで更新されない可能性があるためです。

于 2013-07-14T19:20:01.760 に答える