美文网首页
Chronometer实现倒计时

Chronometer实现倒计时

作者: 胡洁_ec66 | 来源:发表于2020-08-15 10:36 被阅读0次

突然发现好久没有来过了,之前总是在忙论状态,好不容易歇下来,又没有心情写东西。不过这个情况不好,还是要把自己的心得记录一下,方便以后查看。

倒计时这个功能在很多项目中都会出现,之前大多都是用Timer+Handler或者是CountDownTimer来实现。也看到过Chronometer,但是从来没有用过。趁着今天闲下来了,做一下记录。

Chronometer这个类是android提供了一个计时器组件——Chronometer,继承自TextView。

它的主要功能就是计时。

1.主要配置

· format,显示格式,默认是"MM:SS"或"H:MM:SS",以%s来格式化。
· countDown,是否倒计时,与base时间相比较

2.主要方法

· start(),开始计时
· stop(),停止计时
· setBase(long),设置计时基准时间
· setFormat(String),设置显示格式
· setCountDown(boolean),设置是否是倒计时,只有版本大于24才有效
· setOnChronometerTickListener(OnChronometerTickListener),设置监听器

普通的计时就不写了,直接按照这几个方法来就可以。倒计时的话就需要在监听器里做一下处理了。

首先
setCountDown(boolean);

这个方法是说是否倒计时,不过其实在监听中做了处理这个设置不设置的好像也没什么影响。

其次
setOnChronometerTickListener(OnChronometerTickListener)

关键的就是监听里边的处理。
多说无益,代码贴上;

 chronometer.setBase(parse.getTime());
        chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                long base = chronometer.getBase();
                long cur1 = System.currentTimeMillis();
                long l = base - cur1;
                if(l<=0){
                    chronometer.stop();
                    chronometer.setText("倒计时结束");
                }else {
                    chronometer.setText(format(l));
                }
            }
        });
chronometer.start();

就是对结束时间和当前时间差值进行比较,到时间了就停止,否则就进行显示。

format()方法就是对时间进行处理

这里就不用它本身的format()

 private String format(long time){
        String day = time/(24*60*60*1000)>9?time/(24*60*60*1000)+"":"0"+time/(24*60*60*1000);
        long hourRemain = time%(24*60*60*1000);
        String hour = hourRemain/3600000>9?hourRemain/3600000+"":"0"+hourRemain/3600000;
        long minRemain = hourRemain%3600000;
        String min = minRemain/60000>9?minRemain/60000+"":"0"+minRemain/60000;
        long secRemain = minRemain%60000;
        String sec = secRemain/1000>9?secRemain/1000+"":"0"+secRemain/1000;
        return day+"天"+hour+"小时"+min+"分"+sec+"秒";
    }

其实也比较简单,就这样吧!

相关文章

  • Chronometer实现倒计时

    突然发现好久没有来过了,之前总是在忙论状态,好不容易歇下来,又没有心情写东西。不过这个情况不好,还是要把自己的心得...

  • 从Chronometer中学习控件中的定时器生命周期

    Android 提供了一个计时器组件Chronometer ,在原来某些需要倒计时的界面中,完全不需要自己去实现一...

  • Android chronometer 倒计时

    一个需求需要用到倒计时的功能,隐约记得Android有一个自己的计时器,chronometer,非常开心的去使用了...

  • 【Android Demo】倒计时功能

    这里使用了两种方法去实现倒计时功能,第一种相对于第二种要复杂一些,第一种算是提供一些对Chronometer的拓展...

  • JetPack_Lifecycle

    假设有 Chronometer 这个控件,要求在Activity不同的生命周期实现start()或者 stop()...

  • 2019-11-15

    Chronometer 安卓自带计时器 Chronometer.setBase()传入真实时间戳(SystemCl...

  • Android基础到进阶UI Chronometer 使用+实例

    Chronometer Chronometer是一个简单的计时器组件,继承自TextView。但是Chronome...

  • Chronometer

    Android Chronometer(计时器)

  • Chronometer

    简介 官方提供的简易版时间显示控件Google传送门 计时功能 开始计时 停止计时 重置时间 倒计时(暂不建议使用...

  • Android中实现倒计时的几种方式

    1.使用 CountDownTimer 实现倒计时 2.利用Handler实现倒计时 3.利用动画实现倒计时 4....

网友评论

      本文标题:Chronometer实现倒计时

      本文链接:https://www.haomeiwen.com/subject/dmnodktx.html