参考:https://www.jianshu.com/p/4e5c0d58c90c

1.背景

    需要做一个考试时间的倒计时,自己也有想法,但还是不想重复造轮子,直到发现除了timer之外,android还有一个

CountDownTimer。

2.效果图

Android 倒计时(支持小时,分钟)_第1张图片

3.代码

package mvp.study.skymobile.com.testandroidmethod.view;import android.os.CountDownTimer;/** * Author:boshuai.li * Time:2020/3/17   11:42 * Description: 倒计时的工具类 */public class PeterTimeCountRefresh extends CountDownTimer {    private OnTimerFinishListener finishListener;    private OnTimerProgressListener progressListener;    /**     * @param millisInFuture    分钟转换成 毫秒     * @param countDownInterval 计时的时间间隔     */    public PeterTimeCountRefresh(long millisInFuture, long countDownInterval) {        super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔,要显示的按钮    }    @Override    public void onTick(long millisUntilFinished) {//计时过程显示        if (progressListener != null) {            progressListener.onTimerProgress(millisUntilFinished);        }    }    @Override    public void onFinish() {//计时完毕时触发        if (finishListener != null) {            finishListener.onTimerFinish();        }    }    /**     * 设置timer走完的回调     */    public void setOnTimerFinishListener(OnTimerFinishListener finishListener) {        this.finishListener = finishListener;    }    /**     * 设置监听进度的     */    public void setOnTimerProgressListener(OnTimerProgressListener progressListener) {        this.progressListener = progressListener;    }    /**     * Timer 执行完成的回调     */    public interface OnTimerFinishListener {        void onTimerFinish();    }    /**     * Timer 进度的监听     */    public interface OnTimerProgressListener {        void onTimerProgress(long timeLong);    }}

4.使用方法

PeterTimeCountRefresh timer = new PeterTimeCountRefresh(musicDuration, 1000);timer.setOnTimerProgressListener(new PeterTimeCountRefresh.OnTimerProgressListener() {@Overridepublic void onTimerProgress(long timeLong) {String text = TimeUtils.parseDuration(timeLong);PLog.i("onTimerProgress timeLong = " + timeLong + ", text = " + text);tv.setText(text);}});timer.setOnTimerFinishListener(new PeterTimeCountRefresh.OnTimerFinishListener() {@Overridepublic void onTimerFinish() {PLog.i("onTimerFinish enter");}});timer.start();

5.总结

    缺点在不支持暂停和继续,只有取消操作,如果想拓展的小伙伴,可以额外增加一下功能。源码很简单,有兴趣的小伙伴也可以研究下,很有好处的。

更多相关文章

  1. Android之进度条
  2. ProgressBar进度条
  3. Android 中带有进度条效果的按钮(Button)
  4. Android Material Design 进度条 自定义进度条样式
  5. android 超简单的下载功能,进度条 异步下载
  6. android 播放assets目录内的音乐,及使用Seekbar控制播放进度
  7. android:sharedUserId="android.uid.system" 使用系统签名+SNTP

随机推荐

  1. Android(安卓)开发 —— Handler的使用
  2. Android的界面设计规范-5
  3. Android(安卓)APK安装后点击[打开]与[完成]的
  4. Android中asset文件夹和raw文件夹区别
  5. Android学习之Activity伪装成对话框形式)
  6. Flutter 插件开发:以微信SDK为例
  7. Delphi XE7下如何创建一个Android模拟器
  8. 谷歌Android碎片化严重:Android4.0份额仅
  9. Android分享到微信等社交平台教程
  10. Android图形系统分析与移植--四、Surface