Android倒计时定时器CountDownTimer的用法

前一篇讲了关于Timer定时器的用法,详细请看
Android关于定时器Timer的定义及用法
这一篇简单介绍一下关于倒计时定时器的用法,这涉及到一个CountDownTimer类,写了一个简单的案例, 整个案例就一个布局文件,一个Activity类,直接看代码

首先是布局,就一个按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

    <Button  android:id="@+id/send" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送验证" />

</LinearLayout>


接下来是MainActivity中实现
public class MainActivity extends Activity {

    private Button mSend;
    private boolean isClick = true;//按钮是否可点击
    private MyCountDownTimer timer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSend = (Button) findViewById(R.id.send);

        timer = new MyCountDownTimer(10000,1000);


        mSend.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //按钮可点击时,触发倒计时
                if (isClick) {
                    isClick = false;
                    timer.start();
                }
            }
        });
    }

    /** * 自定义倒计时Timer类 * @author maoxf * */
    class MyCountDownTimer extends CountDownTimer{

        //构造方法,第一个参数是倒计时时间,第二个参数是每次减少的时间
        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        //倒计时结束调用
        @Override
        public void onFinish(){
            isClick = true;
            mSend.setClickable(isClick);
            mSend.setText("重新发送");
        }

        //每次减少时间调用
        @Override
        public void onTick(long time) {
            mSend.setClickable(isClick);
            mSend.setText(time/1000+"");
        }

    }
}

最后来看看成果吧

Android倒计时定时器CountDownTimer的用法_第1张图片

你可能感兴趣的:(android,定时器,CountDownT,倒计时定时器)