単純なmm:ssタイマーをアクションバーに表示したい場合は、カウントダウンを開始する分数を選択してから、一度0になったらメソッドを呼び出すことができます。これは可能ですか?ありがとうございますアンドロイドのアクションバーにタイマーを追加することはできますか?
答えて
TextView
をメニューにAction Viewとしてアクションバーに追加し、CountDownTimer
を使用して定期的に更新しました。
(Android 3.0エミュレータ、Android 4.3エミュレータ、Android 4.3搭載の実デバイスでテスト済み)
ここにメニュー項目のXMLがあります。 actionViewClass="android.widget.TextVew"
(showAsActionおよびactionViewClassにはサポートアクションバーを使用しているため、アンドロイド名前空間はありません)に注意してください。 onCreateOptionsMenu
で
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compatibility="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/break_timer"
android:title="@string/break_timer_title"
compatibility:showAsAction="always"
compatibility:actionViewClass="android.widget.TextView" />
</menu>
、私はMenuItem
を見つけるとプライベートTextView
、timerText
に割り当てるgetActionView
を呼び出します。私はここでもいくつかのパディングを適用しているので、画面の端に正しく表示されません。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.break_timer, menu);
MenuItem timerItem = menu.findItem(R.id.break_timer);
timerText = (TextView) MenuItemCompat.getActionView(timerItem);
timerText.setPadding(10, 0, 10, 0); //Or something like that...
startTimer(30000, 1000); //One tick every second for 30 seconds
return true;
}
私はCountDownTimer
を開始し、そのonTick
でtimerText
を更新するstartTimer
と呼ばれる方法があります。私はstartTimer
からonCreateOptionsMenu
に電話をかけて、timerText
が初期化される前にアクセスされないようにします。 (これまでは、startTimer
をonCreate
から呼び出しましたが、NullPointerException
があります)。
secondsToString
を共有するだろうと確信している
private void startTimer(long duration, long interval) {
CountDownTimer timer = new CountDownTimer(duration, interval) {
@Override
public void onFinish() {
//TODO Whatever's meant to happen when it finishes
}
@Override
public void onTick(long millisecondsLeft) {
int secondsLeft = (int) Math.round((millisecondsLeft/(double) 1000));
timerText.setText(secondsToString(secondsLeft));
}
};
timer.start();
}
方法私は上記のonTick
で使用しました。
private String secondsToString(int improperSeconds) {
//Seconds must be fewer than are in a day
Time secConverter = new Time();
secConverter.hour = 0;
secConverter.minute = 0;
secConverter.second = 0;
secConverter.second = improperSeconds;
secConverter.normalize(true);
String hours = String.valueOf(secConverter.hour);
String minutes = String.valueOf(secConverter.minute);
String seconds = String.valueOf(secConverter.second);
if (seconds.length() < 2) {
seconds = "0" + seconds;
}
if (minutes.length() < 2) {
minutes = "0" + minutes;
}
if (hours.length() < 2) {
hours = "0" + hours;
}
String timeString = hours + ":" + minutes + ":" + seconds;
return timeString;
}
ありがとう、マット!それは完全に動作します! – madx
timerText.setText()でのNullPointerException; –
メニューXML
<item
android:id="@+id/counter"
android:title=""
android:showAsAction="always">
</item>
**公共ブールonCreateOptionsMenu(メニューメニュー)」
long timer = 10000;
public Boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu, menu);
final MenuItem counter = menu.findItem(R.id.counter);
new CountDownTimer(timer, 1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = (TimeUnit.MILLISECONDS.toHours(millis))+":"+(TimeUnit.MILLISECONDS.toMinutes(millis) -TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)))+":"+ (TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
counter.setTitle(hms);
timer = millis;
}
public void onFinish() {
counter.setTitle("done!");
}
}.start();
return true;
}
正解... –
はい、それはJavaで、ツールバーのアクション 使用してこのコードをタイマーを追加することが可能です:
private void startTimer(long duration, long interval) {
CountDownTimer timer = new CountDownTimer(duration, interval) {
@Override
public void onFinish() {
//TODO Whatever's meant to happen when it finishes
}
@Override
public void onTick(long millisecondsLeft) {
int secondsLeft = (int) Math.round((millisecondsLeft/(double) 1000));
timerText.setText(secondsToString(secondsLeft));
}
};
timer.start();
}
とも詳細はこちら訪問ユーチューブ:)
- 1. アンドロイドのアクションバーに複数のアイコンを追加するには?
- 2. アンドロイドの空のMainActivityにボタンを追加することはできますか?
- 3. アンドロイドのアクションバーに検索機能とチェックボックスアイコンを追加するには?
- 4. アクションバーの下にツールバーを追加する方法 - アンドロイド
- 5. アクションバーにドロップダウンアイテムを追加するには
- 6. アンドロイドのウィンドウのデフォルトのアクションバーに画像を追加するには?
- 7. Androidのアクションバーを縦に置くことはできますか?
- 8. アンドロイド - アクションバーにオーバーフローメニューを追加すると、アクションアップボタンが動作しない
- 9. デフォルトのテーマにアクションバーを追加する
- 10. Androidのアクションバーにテキストビューを追加する
- 11. フローティングアクションボタンをアクションバーに埋め込むことはできますか?
- 12. タイプライブラリにGUIDを追加することはできますか?
- 13. Firebaseにサブドメインを追加することはできますか?
- 14. スクロールビューにボタンを追加することはできますか?
- 15. UISliderにデリミタを追加することはできますか?
- 16. プライベートデータをGtkWidgetに追加することはできますか?
- 17. Chromeにステレオオーディオフィードを追加することはできますか?
- 18. UIScrollViewにUITableViewを追加することはできますか?
- 19. クリックにカーソルを追加することはできますか?
- 20. CMFCToolBarをダイアログに追加することはできますか?
- 21. observerをtableView.contentOffsetに追加することはできますか?
- 22. ストライプチェックアウトにカスタムフィールドを追加することはできますか
- 23. _layout.cshtmlにビューモデルを追加することはできますか?
- 24. デフォルトのコピーコンストラクタに「追加」することはできますか?
- 25. プログレスバー - タイマーを追加するには?
- 26. テキストバーをアクションバーに追加する方法
- 27. アクションバーにアクションを追加する
- 28. ListActivityにアクションバーを追加する
- 29. R - 関数に追加することはできますか?
- 30. アクションバーの外でSearchViewにラベルを追加するには?
は、あなたがこれまでに試したがある場合だけ、この
よう メニューファイル定義されたタイマーのIDを使用できますか? – Yup
ここに例があります:http://thegeekyland.blogspot.com/2014/07/android-count-down-timer-in-actionbar.html – Arlind