Как отобразить таймер обратного отсчета в моем окне оповещения. Я хочу уведомить пользователя о том, что сеанс закончится через 5 минут, и показать таймер во всплывающем окне оповещения в Android
Таймер обратного отсчета в окне оповещения в Android
Ответы (2)
Создайте пользовательский диалог с TextView
на нем.
и обновите этот код с помощью класса CountDownTimer
следующим образом.
new CountDownTimer(300000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
вы можете закрыть свой диалог в onFinish()
.
для более подробной информации вы можете перейти по этой ссылке
person
Akram
schedule
28.05.2012
@saravanan да, используйте для этого собственный диалог
- person Akram; 28.05.2012
его объект окна предупреждения в object.setMessage (оставшиеся секунды: + millisUntilFinished / 1000); это правильно или нет подскажите пожалуйста
- person saravanan; 28.05.2012
я не думаю, что это правильно, я бы предложил вам использовать настраиваемое диалоговое окно
- person Akram; 28.05.2012
@saravanan перейдите по этой ссылке для пользовательского диалога developer.android.com/guide/ topics/ui/dialogs.html#CustomDialog
- person Akram; 28.05.2012
Следующий код создает приглашение, как вы описали. Он добавляет таймер обратного отсчета к кнопке действия по умолчанию.
private static class DialogTimeoutListener
implements DialogInterface.OnShowListener, DialogInterface.OnDismissListener {
private static final int AUTO_DISMISS_MILLIS = 5 * 60 * 1000;
private CountDownTimer mCountDownTimer;
@Override
public void onShow(final DialogInterface dialog) {
final Button defaultButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE);
final CharSequence positiveButtonText = defaultButton.getText();
mCountDownTimer = new CountDownTimer(AUTO_DISMISS_MILLIS, 100) {
@Override
public void onTick(long millisUntilFinished) {
if (millisUntilFinished > 60000) {
defaultButton.setText(String.format(
Locale.getDefault(), "%s (%d:%02d)",
positiveButtonText,
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished % 60000)
));
} else {
defaultButton.setText(String.format(
Locale.getDefault(), "%s (%d)",
positiveButtonText,
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) + 1 //add one so it never displays zero
));
}
}
@Override
public void onFinish() {
if (((AlertDialog) dialog).isShowing()) {
// TODO: call your logout method
dialog.dismiss();
}
}
};
mCountDownTimer.start();
}
@Override
public void onDismiss(DialogInterface dialog) {
mCountDownTimer.cancel();
}
Диалоговое окно оповещения
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Session Timeout")
.setMessage("Due to inactivity, you will soon be logged out.")
.setPositiveButton("Extend Session", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO: call your log out method
}
})
.setNegativeButton("Log Out Now", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO: call method to extend session
}
})
.create();
DialogTimeoutListener listener = new DialogTimeoutListener();
dialog.setOnShowListener(listener);
dialog.setOnDismissListener(listener);
dialog.show();
person
Jon
schedule
05.07.2017