Android 订单任务倒计时

本文介绍了如何使用Java实现一个计时功能,用于显示剩余支付时间,并通过Handler实现自动每秒更新。核心代码展示了计算剩余时间并格式化为天小时分钟秒,以及定时器机制确保倒计时实时更新。

1.直接返回剩余时间

public static String payDownTime(long timeMi) {
    final String[] downTime = {""};
    long time = System.currentTimeMillis();
    String l = String.valueOf(timeMi - time);
    Log.e("========", "==payDownTime:  l == " + l);
    if (timeMi - time < 0) {
        return "";
    }
    return countTime(Integer.parseInt(l) / 1000);
}

private static String countTime(int time) {
    String day = String.valueOf(time / (3600 * 24));
    String hour = String.valueOf(time / 3600);
    String minute = String.valueOf(time % 3600 / 60);
    String second = String.valueOf(time % 3600 % 60);
    return (day.equals("0") ? "" : (day + "天 "))
            + (hour.length() == 2 ? hour : ("0" + hour)) + ":"
            + (minute.length() == 2 ? minute : ("0" + minute)) + ":"
            + (second.length() == 2 ? second : ("0" + second));
}

 2.带有自动倒计时

public String payDownTime(long timeMi0, TextView textView0) {
    long time = System.currentTimeMillis();
    String l = String.valueOf(timeMi0 - time);
    Log.e("========", "==payDownTime:  l == " + l);
    if (timeMi0 - time < 0) {
        return "";
    }
    textView = textView0;
    timeMi = timeMi0;
    payDownTimeH.removeMessages(0);
    payDownTimeH.sendEmptyMessageDelayed(0, 1000);
    return countTime(Integer.parseInt(l) / 1000);
}

private String countTime(int time) {
    String day = String.valueOf(time / (3600 * 24));
    String hour = String.valueOf(time / 3600);
    String minute = String.valueOf(time % 3600 / 60);
    String second = String.valueOf(time % 3600 % 60);
    return (day.equals("0") ? "" : (day + "天 "))
            + (hour.length() == 2 ? hour : ("0" + hour)) + ":"
            + (minute.length() == 2 ? minute : ("0" + minute)) + ":"
            + (second.length() == 2 ? second : ("0" + second));
}

TextView textView;
long timeMi;

Handler payDownTimeH = new Handler() {
    @Override
    public void handleMessage(@NonNull Message msg) {
        super.handleMessage(msg);
        textView.setText(payDownTime(timeMi, textView));
        payDownTimeH.removeMessages(0);
        payDownTimeH.sendEmptyMessageDelayed(0, 1000);
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值