Android倒计时器,包含天、时、分、秒

1、效果图

在这里插入图片描述

2、思路

算多少秒,秒数取余60,(满足分后剩下的秒数)
算多少分,秒数除60,再取余60 (总分数满足小时后剩下的分数)
算多少时,秒数除60,除60,再取余24 (总小时满足天后剩下的小时)
算多少天,秒数除60,除60,除24 等到的整数就是天数

3、调用方法

private void initView() {

        Observable.interval(1, TimeUnit.MILLISECONDS)
                .take(30000000)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Long aLong) {
                        liveDescCountTime(Math.abs(aLong - 30000000));
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

4、实现方法

public void liveDescCountTime(long ms) {
        long totalSeconds = ms / 1000;
        long seconds = totalSeconds % 60;
        long minutes = totalSeconds / 60 % 60;
        long hours = totalSeconds / 60 / 60 % 24;
        long days = totalSeconds / 60 / 60 / 24;

        String dayStr = "";
        if (days > 0) {
            if (days > 9) {
                dayStr += days + "";
            } else if (days > 0) {
                dayStr += "0" + days + "";
            } else {
                dayStr += "00";
            }
        } else {
            dayStr = "00";
        }
        mTxtDay.setText(dayStr);

        String hourStr = "";
        if (hours > 0) {
            if (hours > 9) {
                hourStr += hours + "";
            } else if (hours > 0) {
                hourStr += "0" + hours + "";
            } else {
                hourStr += "00";
            }
        } else {
            hourStr = "00";
        }
        mTxtHour.setText(hourStr);

        String minutesStr = "";
        if (minutes > 9) {
            minutesStr += minutes + "";
        } else if (minutes > 0) {
            minutesStr += "0" + minutes + "";
        } else {
            minutesStr += "00";
        }
        mTxtMinute.setText(minutesStr);

        String secondStr = "";
        if (seconds > 9) {
            secondStr += seconds;
        } else if (seconds > 0) {
            secondStr += "0" + seconds;
        } else {
            secondStr += "00";
        }
        mTxtSecond.setText(secondStr);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成功之路必定艰辛

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值