android倒计时的简单实现
来源:互联网 发布:小米关闭免费网络短信 编辑:程序博客网 时间:2024/06/05 15:08
android开发过程存在一些场景需要使用到倒计时,最近遇到一个简单的功能便是,按钮在点击后的一分钟中内不允许点击,一分钟后就可以了。其实实现起来还是很简单的,实现方式也有很多。这里主要说一下,利用android提供的CountDownTimer类来实现简单的倒计时功能,先简单看一下效果图吧:
废话不多说,直接看下代码,如下:
public class MainActivity extends AppCompatActivity { private TextView mTvTime; private CountDownTimer mCountDownTimer; private int num = 60; //倒计时总时长 private boolean isStart =true; private Button mBtnStart; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //防止回到桌面后再点击应用图标后再重启应用,当然也可以设置启动模式为singleTask if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ finish(); return; } setContentView(R.layout.activity_main); initView(); Log.e("zxh","onCreate=="); } private void initView() { mTvTime = (TextView) findViewById(R.id.tv_time); mBtnStart = (Button) findViewById(R.id.btn_start); } private void initData() { //初始化倒计时类,第一个参数为总的倒计时时长,第二个为间隔时长 mCountDownTimer = new CountDownTimer((num+ 2)*1000, 1000) { //加2是为了倒计时能显示到0 @Override public void onTick(long millisUntilFinished) { //每隔相应间隔时间回调一次 mTvTime.setText(num + ""); Log.e("zxh","num==" + num); if (num==0){ mBtnStart.setText("重新开始"); isStart = true; num=60; }else { num--; } } @Override public void onFinish() { //倒计时结束的回调 Log.e("zxh","倒计时结束了...num==" + num); } }; } /** * 开始倒计时 * @param view */ public void start(View view){ if (isStart){ //如果是开始状态点击开始计时,文字变为暂停 mBtnStart.setText("暂停"); Log.e("zxh","点击开始。。num==" + num); initData(); mCountDownTimer.start(); isStart = false; }else{ //暂停状态点击则停止计算,文字变为开始 mCountDownTimer.cancel(); mBtnStart.setText("开始"); num++; //停止计算的时候要将数据+1,因为onTick回调函数已-1了 isStart = true; } } /** * 重新倒计时 * @param view */ public void replay(View view){ if (mCountDownTimer != null){ mCountDownTimer.cancel(); num= 60; initData(); mCountDownTimer.start(); mBtnStart.setText("暂停"); isStart = false; } } @Override protected void onDestroy() { super.onDestroy(); Log.e("zxh","onDestroy==mCountDownTimer==" + mCountDownTimer); //因为CountDownTimer是在后台开启了一个线程,为了减少消耗,退出时取消倒计时。 if (mCountDownTimer != null){ mCountDownTimer.cancel(); } }}
这里要注意几点:
1.CountDownTimer这个类会开启一个后台线程去倒计时,如果不cancel掉,会一直到后台倒计时,直到结束;
2.点击计时开始、暂停、重新时,简单逻辑的处理需要理清,具体看代码里注释。
完整源码,可点击链接下载:点击打开链接
阅读全文
0 0
- android倒计时的简单实现
- Android倒计时简单实现
- 简单Android倒计时实现
- Android实现简单倒计时
- android倒计时的简单实现方法
- Android订单倒计时的简单实现
- Android---验证码倒计时的简单实现
- 倒计时的简单实现
- Android倒计时简单方法实现
- Android 简单实现倒计时CountDownTimer
- 简单实现Android倒计时功能
- Android 倒计时的实现
- Android -- 倒计时的实现
- Android倒计时+警报[最简单的实现方式]
- Android 4.0以上简单实现倒计时按钮
- Android三种超简单办法,实现按钮倒计时
- Android实现验证码倒计时简单效果
- Android控件倒计时的实现
- 自动化测试思考
- 16年经历的那些事
- 原声js 轮播图 动态添加低栏+淡入淡出
- CheckPoint运行原理
- 理解Javascript的状态容器Redux
- android倒计时的简单实现
- Java进阶(四) 线上问题定位
- Windows 7/8.1 下安装 GPU版本的 tensorflow
- 编辑器扩展学习笔记(三)———菜单选项的可用性验证
- FTP 主动模式与被动模式
- 常见缓存算法和LRU的c++实现
- 遇见
- Android-布局
- MySQL入门——修改数据表3:删除指定表的指定的数据列(字段)