Android简单计时器的实现

本文介绍如何利用Android OS包中的CountDownTimer类简化短信验证码功能的实现过程,通过实例展示从布局到代码的简洁解决方案,并讨论了优快云编辑框的用户体验问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="font-family: Arial, Helvetica, sans-serif;">	</span><span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px;">今天在做一个获取短信验证码的功能时,要求用户点击了一次获取验证码后要在控件上显示一个时间,即在这个时间内不能再去点击该控件(就是使其在这个时间内失焦)。于是乎上网看了下别人的实现,各种自定义控件看得我眼花缭乱,一个小小的功能难道要搞得那么复杂(我还没具体研究网上的具体功能)?我仔细研究发现在android.os包下有个抽象类CountDownTimer,这就是为我们计时而产生的吧?先上效果图,然后再上代码。</span>

计时开始前


开始计时


计时结束

看了简单效果,我们来看下代码更简单:

首先布局文件就不说了,眯着眼睛都能看出这是一button。

接着就是activity文件了,简单如下:

public class MainActivity extends Activity {

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

        testTime = (Button) findViewById(R.id.btn_main_time);
        testTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //time.start();
                new CountDownTimer(60000,1000){

                    @Override
                    public void onTick(long l) {
                        testTime.setClickable(false);
                        testTime.setText(l / 1000 + "秒后重新发送");
                        testTime.setBackgroundColor(Color.RED);
                    }

                    @Override
                    public void onFinish() {
                        testTime.setClickable(true);
                        testTime.setText("重新发送");
                    }
                }.start();
            }
        });
    }
   }


确实有点简单,写下来主要是备忘的,如果有更好的方法欢迎大家推荐!

最后吐槽下,csdn的编辑框用户体验感真不好,博客园的好多了!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值