如何在Android应用程序中倒计时直到将来?

时间:2014-04-04 20:47:31

标签: android countdown days

我想在我的应用程序中添加一个新的未来,它在textView中显示由我设置的特定日期,日期以及每天通过后要更改的textView。我尝试了很多东西,不止一次,但到目前为止还没有。

我从这里开始:

CountDownTimer countDown = new CountDownTimer(3000,1000) {

        @Override
        public void onTick(long millisUntilFinished) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFinish() {
            // TODO Auto-generated method stub

        }
    };
    countDown.start();

非常感谢!!!

2 个答案:

答案 0 :(得分:1)

好吧,我很久以前为一个小部件做过类似的事情,所以请查看下面的代码,如果有什么不清楚的地方让我知道。它可能不是100%“正确”,因为它是在我开始编写Android代码时,但它应该给你一个想法......

    private static final long MILLIS_IN_DAY = 24 * 60 * 60 * 1000;
    private static final long MILLIS_IN_HOUR = 60 * 60 * 1000;
    // ...


    Time awaitedTime = new Time();
    awaitedTime.set(second, minute, hour, day, month, year);

    Time defaultTime = new Time();
    defaultTime.set(0, 0, 0, 1, 7, 1989);

    if (awaitedTime.toMillis(false) == defaultTime.toMillis(false)) {

        return "No date";
    }
    else {

        int tempRest = 0;

        Time currentTime = new Time();
        currentTime.setToNow();

        long remainingTime = awaitedTime.toMillis(false) - currentTime.toMillis(false);
        int remainingDays = (int) (remainingTime / MILLIS_IN_DAY);

        tempRest = (int) (remainingTime % MILLIS_IN_DAY);
        int remainingHours = (int) (tempRest / MILLIS_IN_HOUR);

        // return YOUR STRING HERE
    }

答案 1 :(得分:0)

  

我只是不知道如何显示天数,我只能显示   直到倒计时必须计算。有问题,如何   显示天数?

我建议您使用JodaTime

Days.daysBetween(new LocalDate(start), new LocalDate(end)).getDays() 

关于更新:

Wy,你不要只是更新onResume()中的剩余天数。当用户午夜使用你时,你真的想要覆盖这种情况吗?:)

如果是这种情况,您可以使用AlarmManager。这是草稿:

AlarmManager manager = Context.getSystemService(Context.ALARM_SERVICE);

Intent intent = new Intent(this, UpdateDaysReceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

manager.setRepeating (int type, long triggerAtMillis, 24*60*60*1000, pi)

您可以在UpdateDaysReceiver中处理更新。