1、效果图

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

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);
    }