Android进阶之抢购倒计时功能
来源:互联网 发布:域名注册后怎么用 编辑:程序博客网 时间:2024/05/18 00:54
1、简介
CountDownTimer 是 android 提供的一个类,其位于 android.os 包中。用 CountDownTimer 来实现倒计时,并动态显示在布局上。
参数:
countDownTimer.start();方法开始
countDownTimer.cancel();方法结束
new CountDownTimer(30000, 1000); //第一个参数表示 总的时间为30000毫秒,间隔1000毫秒
2、实现步骤
2.1、 新建 Counter类,继承 CountDownTimer,重载 onFinish() 和 onTick() 两个函数,并实现构造函数。
import android.os.CountDownTimer;public class Counter extends CountDownTimer { public Counter(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish() { } @Override public void onTick(long millisUntilFinished) { }}
提示:
1)倒计时完成后将执行 onFinish() 函数;
2)onTick() 函数为倒计时执行时的回调函数,millisUntilFinished 为当前剩下时间,单位毫秒。
2.2、 声明全局变量
private static final int SECONDS = 60; //秒数private static final int MINUTES = 60 * 60; //小时private long first = 0, twice = 0, third = 0;private long mtmp = 0, mtmp2 = 0;
2.3、在 onTick 函数中更新UI,并以 “00:00:00” 时分秒的格式动态显示
@Overridepublic void onTick(long millisUntilFinished) { //获取当前时间总秒数 first = millisUntilFinished / 1000; if(first < SECONDS) { //小于一分钟 只显示秒 settext("00:00:" + (first<10?"0"+first:first)); }else if(first < MINUTES) { //大于或等于一分钟,但小于一小时,显示分钟 twice = first % 60; //将秒转为分钟取余,余数为秒 mtmp = first/60; //将秒数转为分钟 if(twice==0) { settext("00:" + (mtmp<10?"0"+mtmp:mtmp) + ":00"); //只显示分钟 } else { settext("00:" + (mtmp<10?"0"+mtmp:mtmp) + ":" + (twice<10?"0"+twice:twice)); //显示分钟和秒 } }else { twice = first % 3600; //twice为余数 如果为0则小时为整数 mtmp = first / 3600; if(twice == 0) { //只剩下小时 settext("0" + first/3600 + ":00:00"); }else { if(twice < SECONDS) { //twice小于60 为秒 settext((mtmp<10?"0"+mtmp:mtmp) + ":00:" + (twice<10?"0"+twice:twice)); //显示小时和秒 }else { third = twice%60; //third为0则剩下分钟 否则还有秒 mtmp2 = twice/60; if(third == 0) { settext((mtmp<10?"0"+mtmp:mtmp) + ":" + (mtmp2<10?"0"+mtmp2:mtmp2) + ":00"); }else { settext((mtmp<10?"0"+mtmp:mtmp) + ":" + (mtmp2<10?"0"+mtmp2:mtmp2) + ":" + third); //还有秒 } } } }}
提示:
①其中 (mtmp<10?”0”+mtmp:mtmp) 为判断当前数字是否小于10,成立则在前面加上 “0”,如 ”05“;
②settext() 为自定义函数,可通过实情况将其替换为UI更新函数,如 TextView.setText();
2.4、实例化 Counter,实现倒计时
counter = new Counter(5*60*1000, 1000);//第一个参数是倒计时时间,后者为计时间隔,单位毫秒,这里是倒计时 5 分钟,间隔1秒counter.start();
2.5、取消倒计时
counter.cancel();
3、补充:30秒倒计时实现
package com.example.daojishi; import android.app.Activity; import android.os.Bundle; import android.os.CountDownTimer; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast; /** * @author 冠 * 倒计时的类 CountDownTimer */public class MainActivity extends Activity { private MyCountDownTimer mc; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.show); mc = new MyCountDownTimer(30000, 1000); mc.start(); } public void oncancel(View view) { Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_LONG).show();// toast有显示时间延迟 mc.cancel(); } public void restart(View view) { Toast.makeText(MainActivity.this, "重新开始", Toast.LENGTH_LONG).show();// toast有显示时间延迟 mc.start(); } /** * 继承 CountDownTimer 防范 * 重写 父类的方法 onTick() 、 onFinish() */ class MyCountDownTimer extends CountDownTimer { /** * @param millisInFuture 表示以毫秒为单位 倒计时的总数 * @param countDownInterval 表示 间隔 多少微秒 调用一次 onTick 方法 */ public MyCountDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish() { tv.setText("done"); } @Override public void onTick(long millisUntilFinished) { Log.i("MainActivity", millisUntilFinished + ""); tv.setText("倒计时(" + millisUntilFinished / 1000 + ")..."); } } }
0 0
- Android进阶之抢购倒计时功能
- android 倒计时抢购实现
- 团购倒计时抢购功能
- Android 付款 抢购 倒计时TimerTextView
- Android Tip 之倒计时功能
- Android进阶之ListView实现多条数据同时倒计时功能
- 抢购倒计时
- Android实现计时与倒计时(限时抢购)
- android 仿淘宝限时抢购倒计时
- Android限时抢购倒计时实现代码
- 如何最快速实现倒计时功能和限时抢购功能
- ecshop 中添加限时抢购功能(倒计时)
- android使用CountDownTimer类,实现类似抢购的倒计时控件
- android listview列表实现倒计时,类似商品抢购列表
- Android进阶之倒计时多种实现方式与倒计时暂停重启
- android 实现倒计时功能
- Android倒计时功能实现
- Android 倒计时功能
- 如何修改UIButton的imageView显示以及裁剪图片
- POJ--3006 Dirichlet's Theorem on Arithmetic Progressions
- 静态库、共享库、动态库的创建和使用
- jar包和war包区别
- 为 Visual Studio 配置 Git 源代码管理工具
- Android进阶之抢购倒计时功能
- mysql新建用户
- FZU 1978 Repair the brackets
- JVM学习笔记5—类加载器(classloader)
- JavaSE过程与感想集
- 【每日算法】链表 & 例题选讲
- POJ--2109 Power of Cryptography
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第11节 通过Set集合管理课程
- XCODE git 提交时 出现 *** Please tell me who you are. 错误提示