Android(安卓)demo倒计时原理(CountDownTimer原理)
16lz
2022-03-09
项目中用绑定手机号功能,发送之后2分钟倒计时。
倒计时的功能用到了CountDownTimer类,这是android的一个工具类。很巧妙
demo地址:http://download.csdn.net/detail/pangzaifei/7006651
倒计时的功能用到了CountDownTimer类,这是android的一个工具类。很巧妙
下面是这个类的原理解析,此类比较简单。但很强大。
package com.example.democountdowntheory;import android.os.Handler;import android.os.Message;import android.os.SystemClock;public abstract class MyCountDownTimer {/*原理: * 随时用SystemClock.elapsedRealtime()获取时间,使用这个时间来精确倒计时的数值 * 其他比较简单看看就明白了 * */private static final int MSG = 1;private long mSetTotalTime;// 总的时间120000,120秒private long mSetDownValue;// 减少的值1000,1秒public MyCountDownTimer(long totalTime, long downValue) {this.mSetTotalTime = totalTime;this.mSetDownValue = downValue;}/** * 启动 */public final synchronized MyCountDownTimer start() {if (mSetTotalTime <= 0) {onFinish();return this;}mStartTime = SystemClock.elapsedRealtime() + mSetTotalTime;// 开始的时间+开机到现在的时间mHandler.sendMessage(mHandler.obtainMessage(MSG));return this;};/** * 变化的值 */public abstract void onTick(long remain);public void cancel() {mHandler.removeMessages(MSG);}/** * 结束之后 */public abstract void onFinish();private Handler mHandler = new Handler() {public void handleMessage(Message msg) {synchronized (MyCountDownTimer.this) {long remain = mStartTime - SystemClock.elapsedRealtime();// 减少后,剩余的时间。if (remain <= 0) {onFinish();// 完成} else if (mSetTotalTime < mSetDownValue) {// 设置的值<down减少的值sendMessageDelayed(obtainMessage(MSG), remain);} else {// 减少操作long pre = SystemClock.elapsedRealtime();onTick(remain);// 将值回调,供用户使用long delay = pre + mSetDownValue- SystemClock.elapsedRealtime();while (delay < 0) {delay += mSetDownValue;}sendMessageDelayed(obtainMessage(MSG), delay);}}};};private long mStartTime;}
demo地址:http://download.csdn.net/detail/pangzaifei/7006651
更多相关文章
- Android执行shell命令
- 今天在网上看到了Google的GPhone的消息,学习学习android先。
- Android(安卓)控件之DatePicker,TimePicker,Calender
- Android(安卓)开发中遇到的 bug(5)
- Android之SQLite存取DATETIME类型
- Android(安卓)achartengine统计图
- Android(安卓)SharedPreferences 实现原理
- android工具之TraceView学习笔记
- Android(安卓)Retrofit 源码系列(一)~ 原理剖析