Android 倒数定时器CountDownTimer

实现倒计时的效果

例子:发送验证码按钮

效果图:

这里写图片描述

/**
 * 倒计时
 * 
 * @author admin
 * 
 */
public class MainActivity extends ActionBarActivity {

    private Button tvTime;// 显示时间
    private MyCountDownTimer myCountDownTimer;// 倒计时对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvTime = (Button) findViewById(R.id.time);
        tvTime.setText("发送验证码");
        tvTime.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                start();

                tvTime.setEnabled(false);// 倒计时时不可点击

            }
        });
    }

    /**
     * 开始
     * 
     * @param view
     */
    public void start() {
        long countDownInterval = 1000;// 间隔时间
        long millisInFuture = 20000;// 时长
        myCountDownTimer = new MyCountDownTimer(millisInFuture,
                countDownInterval);
        myCountDownTimer.start();
    }



    /**
     * 结束
     * 
     * @param view
     */
    public void end() {
        if (myCountDownTimer != null) {
            myCountDownTimer.cancel();

        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        end();
    }

    /**
     * 倒计时
     * 
     * @author admin
     * 
     */
    private class MyCountDownTimer extends CountDownTimer {

        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        // 可直接更新UI
        @Override
        public void onTick(long millisUntilFinished) {
            tvTime.setText("剩余时间:" + millisUntilFinished / 1000);// 转化为秒
        }

        @Override
        public void onFinish() {
            tvTime.setText("获取验证码");
            tvTime.setEnabled(true);// 当时间结束时才可以点击

        }

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章