小言_互联网的博客

CountDownTimer 实现验证码倒计时

286人阅读  评论(0)

先看下完整的代码,如是使用入职过去即可

public class MainActivity extends AppCompatActivity {
    private TextView code;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        code = findViewById(R.id.rx_txt);
        code.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.start();
            }
        });

    }

    CountDownTimer timer = new CountDownTimer(10 * 1000+1050, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            code.setClickable(false);
            code.setText(millisUntilFinished / 1000 -1 + "秒");
            Log.e("-----------time", String.valueOf(millisUntilFinished));
            Log.e("---------时间", String.valueOf(millisUntilFinished/1000));
        }

        @Override
        public void onFinish() {
            code.setText("重新获取");
            code.setClickable(true);
        }
    };


    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (timer != null) {
            timer.cancel();
        }
    }
}
CountDownTimer 里面第一个参数是总的时间,第二个是倒计时的时间,自己可以根据需求修改

它有2个方法一个是onTick 和 onFinish

点击和结束的方法 ,操作在里面即可。。。

为啥要在OnDestory 里面添加cancel, 因为CountDownTimer 底部调用的是Handler 为了内存泄漏所以呢cancel别忘记添加了

时间添加了1050 呢 是保证为了到时间显示0 每次时间准确些,打印的日志可以看出问题 。。。

 


转载:https://blog.csdn.net/qq_33210042/article/details/101287201
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场