Android CountDownTimer倒计时器的使用和Handler

Android中使用CountDownTimer封装CountDownUtil,制作一个简易定时器 Android中使用CountDownTimer封装CountDownUtil,制作一个简易定时器,详细了解请移步:http://blog.youkuaiyun.com/zxc514257857/article/details/75022049 立即下载

http://blog.youkuaiyun.com/lilu_leo/article/details/6941724


/**
 * 验证码请求倒计时工具类
 *
 * @version v1.0
 * @copyright 2010-2015
 */

@SuppressLint("ResourceAsColor")
public class TimeUtil {

    // 倒计时timer
    private CountDownTimer countDownTimer;
    // 计时结束的回调接口
    private OnFinishListener listener;

    private TextView tv;
    private Context mContext;

    /**
     * @param tvSend   需要显示倒计时的TextView
     * @param max      需要进行倒计时的最大值,单位是秒
     * @param interval 倒计时的间隔,单位是秒
     */
    public TimeUtil(final Context context, final TextView tvSend, int max, int interval) {

        this.mContext = context;
        this.tv = tvSend;
        // 由于CountDownTimer并不是准确计时,在onTick方法调用的时候,time会有1-10ms左右的误差,这会导致最后一秒不会调用onTick()
        // 因此,设置间隔的时候,默认减去了10ms,从而减去误差。
        // 经过以上的微调,最后一秒的显示时间会由于10ms延迟的积累,导致显示时间比1s长max*10ms的时间,其他时间的显示正常,总时间正常
        countDownTimer = new CountDownTimer(max * 1000, interval * 1000 - 10) {

            @Override
            public void onTick(long time) {
                tv.setTextColor(context.getResources().getColor(R.color.black));
                tv.setBackgroundColor(context.getResources().getColor(R.color.white));
                // 第一次调用会有1-10ms的误差,因此需要+15ms,防止第一个数不显示,第二个数显示2s
                tv.setText(((time + 15) / 1000) + "秒后可重发");

            }

            @Override
            public void onFinish() {
                tv.setClickable(true);
                // tv.setTextColor(Color.parseColor("#028ce3"));
//				tv.setText(R.string.repeat_send);
                if (listener != null) {
                    listener.finish();
                }
            }
        };
    }

    /**
     * 开始倒计时
     */
    public void start() {
        tv.setClickable(false);
        countDownTimer.start();
    }

    /**
     * 设置倒计时结束的监听器
     *
     * @param listener
     */
    public void setOnFinishListener(OnFinishListener listener) {
        this.listener = listener;
    }

    /**
     * 计时结束的回调接口
     */
    public interface OnFinishListener {
        public void finish();
    }

    public void cancel() {
        countDownTimer.cancel();
        tv.setClickable(true);
        // tv.setTextColor(Color.parseColor("#028ce3"));
        tv.setText(mContext.getResources().getString(R.string.repeat_send));
    }
}



handler使用倒计时

/*=====*/
    Handler msmTimeOpHandler = new Handler();
    Runnable msmTimeOpRunnable = new Runnable() {
        @Override
        public void run() {
            msmTimeOp();
        }
    };
    private void msmTimeOp() {
        smsVailTime--;
        if (smsVailTime == 1) {
            vTimeTv.setText("正在跳转");

            boolean isfirstStart = mSP.get().getBoolean(Config.SP_ISFIRSTSTART, false);
            if (isfirstStart) {
                PrefManager.getInstance().setLong(ExtraConstrat.OP_TIME, 0);
                startActivity(MainActivity.class);
            } else {
                startActivity(GuidActivity.class);
            }
            mActivity.finish();
        } else {
            vTimeTv.setText(smsVailTime + "秒跳转");
            msmTimeOpHandler.postDelayed(msmTimeOpRunnable, 1000);
        }
    }

发送按钮监听执行

   msmTimeOpHandler.postDelayed(msmTimeOpRunnable, 1000);




Android基于CountDownTimer实现倒计时功能 本文实例讲述了Android编程基于CountDownTimer实现倒计时功能的方法。分享给大家供大家参考,具体如下: 在逛论坛的时候,看到一个网友提问,说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成一个方便的类调用。 查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。 下面是官方给的一个小例子: new CountdownTimer(30000, 1000) { public void onTick 立即下载

相关推荐

【Flink cdc】Data row is smaller than a column index, internal schema representation is probably xxx

翻译一下:当scan.startup.mode=EARLIEST_OFFSET时,如果在最早的offset之后表结构有过变化就无法支持。原因应该是在binlog 的earliest_offset之后,表结构被修改过。我的解决方案:source配置中使用。mysql source配置使用。,以时间戳为消费依据。

integrity 2084

安卓项目实战之:倒计时类CountDownTimer的使用详解

前言 在Android应用中几乎都能看到,闪屏页或者欢迎页右上角有一个 “倒计时 + 跳过” 的功能,还有就是获得验证码的倒计时功能,Android 实现倒计时的方式有多种,Handler 延时发送 Message,Timer 和 TimerTask 配合使用,使用 CountDownTimer 类等。相比而言,经过系统封装的 CountDownTimer 算是使用起来最为方便的方式之一。 Cou...

智玲君 2065

用COMSOL计算复合材料板频散曲线:从建模到绘图全流程

导波在板结构中传播时,不同频率成分的速度不同,即频散现象。理解频散曲线是识别导波模态、确定相速度与群速度的基础,也是无损检测和结构健康监测中信号解读的关键。对于碳纤维增强复合材料等各向异性板,频散关系更加复杂,传统解析方法难以求解,数值仿真成为主流手段。通过COMSOL结合周期性边界条件与特征频率扫描,可以高效计算出复合材料板的频散曲线,进而绘制相速度和群速度随频率变化的图谱,为实验模态识别、换能器激励频率选择提供依据。本文以一个2毫米单向碳纤维板为例,详细介绍几何建模、材料参数设置、网格收敛验证、参数扫描

weixin_31412781的博客 233

Android Studio的代码笔记--倒计时学习2:CountDownTimer

倒计时:CountDownTimer简单使用CountDownTimer调用效果写一个类继承使用使用调用效果 简单使用 CountDownTimer CountDownTimer(总的时间, 时间间隔) private CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { //

weixin_45208598的博客 777

20、七鳃鳗繁殖与早期生活史:从水质到养殖的全面解析

本文全面解析了七鳃鳗的繁殖与早期生活史,重点探讨了水质对幼体生存的影响、养殖密度与生长关系、变态过程的时间与大小特征,以及人工繁殖在濒危物种恢复和入侵物种控制中的应用。同时,文章分析了大规模养殖面临的挖掘基质需求、空间限制、清洁管理、疾病防控及微生物环境等挑战,并强调实验室养殖对科学研究和种群管理的重要意义。随着技术进步,未来有望扩展更多物种的繁殖研究,揭示七鳃鳗生物学的进化奥秘,实现资源的可持续利用。

l6m7n8的博客 115

49、非合作目标运动参数估计与状态滤波方法研究

本文研究了非合作空间目标的运动参数估计与状态滤波方法。通过分析目标的章动运动特性,建立了运动方程,并分别提出了基于最小二乘法的质心运动参数估计方法和旋转运动参数估计方法。同时,设计了误差状态卡尔曼滤波器(ESKF)用于姿态滤波和角速度估计,以提高估计精度。仿真实验验证了所提方法的有效性,能够准确估计目标的运动参数和状态信息,为在轨服务提供了技术支持。

gpt4scribbler的博客 88

Android计时常用的7种方式

以下计时方式都是Android中常见的计时方式,现总结如下: 1.timer、timertask配合handler计时 2.countdowntimer计时 3.handler精确计时方式 4.handler普通循环方式 5.ScheduleExecuteService定时 6.AlarmManager定时 7.rxJava计时 实现效果图如下: 下面配合具体代码详细介绍上述...

王温暖的博客 2万+

IP-Guard分类管理详解

大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...

IP-Guard专栏 589

倒计时的方法(handler及CountDownTimer)

方法1:使用handler step 1:application创建handler,APP需要在Manifest注册 /** * Project_name:MainActivity * Created by:ChenFuXU. * Date: 2021/12/11 20:07 */ public class APP extends Application { private static Handler sHandler = null; @Override publi

qq_40447795的博客 452

【信号与系统】Multisim 仿真信号合成与分解

软件 Multisim 进行方波信号的产生、分解和合成,观察信号波形的分解与合成,加深对信号频谱的理解。

AXYZdong的博客 2万+

LSTM 双向 Bi-LSTM

LSTM 双向 Bi-LSTM

jacke121的专栏 1516

Android CountDownTimer倒计时器的使用

在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,

拿铁不懂绿茶 7万+

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

android handler移除定时,Android使用Handler实现定时器与倒计时器功能

什么是HandlerHandler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;L...

weixin_32702015的博客 563

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于Android倒计时器,一款基于Handler的Android定时器与倒计时器

基于Handler的Android定时器与倒计时器源码地址:Github AndroidTimer特性支持操作 :startpauseresumecancel使用allprojects{repositories{...maven{url'https://jitpack.io'}}}dependencies{...compile'com.github.xesam:AndroidTim...

weixin_39863371的博客 155

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android handler 封装,什么是Handler    Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handle...

什么是HandlerHandler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;L...

weixin_30726605的博客 296

android简易倒计时器 from manying in iteye

这是一个android平台的简易倒计时器,可以实现设置时间的倒计时以及时间到后的提醒功能。       android sdk提供的CountdownTimer 类已经实现的倒计时功能,但却没有暂停,继续等功能,在这个类的基础上可以实现一个自己的计时类。       package com.util; Java代码   import android.os.Han

kan1kan5的专栏 1050

android原生定时任务_【Android】定时任务

android-timer基于Handler的Android定时器与倒计时器修改自 Android SDK 中的 CountDownTimer特性支持操作 :startpauseresumecancel注意以上方法是同步方法,请不要在回调方法里面调用以上方法。使用CountTimernew CountTimer(100) {@Overridepublic void onTick(long mill...

weixin_39531378的博客 190

Android CountDownTimer 倒计时器的简单使用

一、写在前面的 在Android应用中几乎都能看到,闪屏页或者欢迎页右上角有一个 “倒计时 + 跳过” 的功能,还有就是获得验证码的倒计时功能,有些人会想到延迟的实现方式,在这里通过实用Android封装好的类 CountDownTimer 就能轻松实现,其内部原理就是通过Handler机制实现的。 二、效果图 (有待添加) 三、CountDownTimer 介绍 1、CountDown...

Z·Pan 2万+

Android CountDownTimer倒计时器

Android开发,常常需要用到倒计时器,倒计时多少秒后再执行相应的功能,Android已经封装好了几个类,下面就分别来讲讲 这三种常用计时的方法。 一、CountDownTimer 该类是个抽象类,主要功能就是可以我们自己设置倒计时的秒数和时间间隔,只有一个构造方法,构造函数为: public CountDownTimer(long millisI

阿星的博客 991

Android CountDownTimer 分析

有时候我们在一些特别的场景可能会需要使用到不是这么精确的倒计时的功能,比如说:发送短信验证码倒计时。有时候我们会发现这个功能也不难但是实现起来的话也挺繁琐的,这个时候系统Api就为我们简化代码封装了一个CountDownTimer的类来使用。我们平时在做这类需求的时候可能很多都会使用Thread+Handler或者是Timer + handler机制,一个简单的功能写了一大片的代码来实现,下面我们就

寻梦者 2386

基于Android倒计时器,Android CountDownTimer实现倒计时器

使用介绍开发中经常会遇到一些和倒计时有关的场景,比如发送验证码的按钮,会在点击发送后,显示倒计时间,倒计时结束后才能够刷新按钮,再次允许点击。为了不阻塞软件的运行,又要实时刷新界面,我们通常会用到 Handler 或者 AsyncTask 等技术,自己写逻辑实现。其实 Android 中已经封装好了一套 CountDownTimer 来实现这个功能需求。CountDownTimer(long mi...

weixin_35953155的博客 393

android 定时器 github,Android使用Handler实现定时器与倒计时器功能

什么是HandlerHandler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;L...

weixin_35629057的博客 326

android 中CountDownTimer类源码分析

1, 概述 CountDownTimer从字面理解就是倒计时器,每隔固定的时候可以触发onTick方法,主要应用于倒计时和周期的执行特定的事情,控制灵活多变。 2, CountDownTimer CountDownTimer是一个抽象类,有2个抽象方法, onTick和onFinish public abstract void onTick(long millisUntilFinished

Jack的博客 646

Andrroid中如何在非UI线程中使用Toast和利用CountDownTimer实现倒计时

一 非UI线程使用Toast 在Android程序的开发过程中,我们经常会涉及网络请求和UI组件的操作。而网络请求必须在子线程中进行,也就是new一个Runnable对象,在它的run()方法里面进行请求。而不能在UI线程中直接请求网络资源,否则会报异常。 为了更好的提升交互效果,Toast的使用也是非常频繁的。如果在主线程中使用Toast,我们可以直接用,如: Toast,makeText(th...

zhaojunwei666的博客 1万+

一款基于Handler的Android定时器与倒计时器

基于Handler的Android定时器与倒计时器源码地址:Github AndroidTimer特性支持操作 :start pause resume cancel 使用allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { ...

401
上一篇: svn使用总结
下一篇: Java的单例
code_dream_wq
博客等级 码龄10年 51粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值