zoukankan      html  css  js  c++  java
  • Android倒计时工具类CountDownTimer

    在开发中很多地方都会用到倒计时功能,例如限时抢购、12306支付倒计时、短信验证码120s倒计时等等,之前一直使用Handler + Runnable来实现,后来发现Android自带的CountDownTimer这个工具类很好用,也是通过Handler和子线程来实现的。使用起来很方便,示例代码如下:

    package com.example.countdowntimer;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.CountDownTimer;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private TextView tvCount;
        private Button btnBegin;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tvCount = (TextView) findViewById(R.id.tvCount);
            btnBegin = (Button) findViewById(R.id.btnBegin);
    
            btnBegin.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    cdTimer.start();
                }
            });
        }
    
        /**
         * Parameters:
         * millisInFuture   The number of millis in the future from the call to start() until the countdown is done and onFinish() is called.
         * countDownInterval    The interval along the way to receive onTick(long) callbacks.
         */
        private CountDownTimer cdTimer = new CountDownTimer(10000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                tvCount.setText((millisUntilFinished / 1000) + " s");
            }
    
            @Override
            public void onFinish() {
                tvCount.setText("0 s");
                Toast.makeText(MainActivity.this, "CountDownFinish", Toast.LENGTH_SHORT).show();
            }
        };
    }
    

    布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${relativePackage}.${activityClass}" >
    
        <TextView
            android:id="@+id/tvCount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="28dp"
            android:text="10s" />
    
        <Button 
            android:id="@+id/btnBegin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tvCount"
            android:layout_centerHorizontal="true"
            android:text="开始计时"/>
    
    </RelativeLayout>
    

    CountDownTimer的构造方法有两个参数:
    第一个参数:从调用start()开始,到计时结束的时间,也就是倒计时的总时间,单位为毫秒;
    第二个参数:倒计时间的隔时间,单位为毫秒;

    主要方法:
    onTick(long millisUntilFinished),当前任务每间隔countDownInterval时间时回调。
    onFinish(),当前倒计时任务完成的时候回调。
    start(),启动当前的任务。
    另外还有一个cancel()方法,用来取消当前倒计时任务。

    效果图
    开始计时

    倒计时结束

  • 相关阅读:
    StarUML
    第二周周二日报
    第二周周一日报
    第一周周末报
    第一周周四日报
    第一周第三天日报
    软件开发总结
    构建之法总结
    《构建之法》第六章
    个人日志7
  • 原文地址:https://www.cnblogs.com/lishbo/p/9956013.html
Copyright © 2011-2022 走看看