zoukankan      html  css  js  c++  java
  • Android 获取验证码倒计时实现

    Android 获取验证码倒计时实现

     版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36478920/article/details/78326305

    1. 验证码输入框和获取验证码按钮布局

    xml代码:

            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="@color/white"
                android:orientation="horizontal" >
    
                <EditText
                    android:id="@+id/phonetext"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:layout_marginLeft="15dp"
                    android:layout_gravity="center_vertical"
                    android:inputType="number"
                    android:hint="请输入短信验证码"
                    android:background="@null"/>
    
                <Button
                    android:id="@+id/timebutton"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginTop="10dp"
                    android:textSize="16dp"
                    android:background="@drawable/tv_timemessage_bg"
                    android:text="获取"
                    />
    
            </LinearLayout>

    效果如下:

    效果图

    2. 根据id设置Button点击事件触发倒计时

    JAVA代码:

    /**
     * Created by fby on 2017/9/11.
     */
    public class ChargepsdActivity extends Activity {
    
        private Button timeButton;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_chargepsd);
    
            timeButton = (Button) findViewById(R.id.timebutton);
            //new倒计时对象,总共的时间,每隔多少秒更新一次时间
            final MyCountDownTimer myCountDownTimer = new MyCountDownTimer(60000,1000);
    
            //设置Button点击事件触发倒计时
            timeButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    myCountDownTimer.start();
                }
            });
    
        }

    3. 倒计时函数

    
        //倒计时函数
        private class MyCountDownTimer extends CountDownTimer {
    
            public MyCountDownTimer(long millisInFuture, long countDownInterval) {
                super(millisInFuture, countDownInterval);
            }
    
            //计时过程
            @Override
            public void onTick(long l) {
                //防止计时过程中重复点击
                timeButton.setClickable(false);
                timeButton.setText(l/1000+"秒");
    
            }
    
            //计时完毕的方法
            @Override
            public void onFinish() {
                //重新给Button设置文字
                timeButton.setText("重新获取");
                //设置可点击
                timeButton.setClickable(true);
            }
        }
    
    }

    4. 清除倒计时函数,解决验证码输入正确后停止计时

    private void clearTimer() {
            if (task != null) {
                task.cancel();
                task = null;
            }
            if (timer != null) {
                timer.cancel();
                timer = null;
            }
        }
  • 相关阅读:
    POJ
    POJ
    POJ1753 Flip Game(位运算+暴力枚举)
    20160326 javaweb 请求转发和请求包含
    将博客搬至CSDN
    javaweb 中的乱码问题
    20160324 javaweb 之request
    20160322 javaweb 学习笔记--response验证码实现
    20160322 javaweb 学习笔记--response 重定向
    深入分析 Java 中的中文编码问题 (文章来自网络)
  • 原文地址:https://www.cnblogs.com/yelanggu/p/10754004.html
Copyright © 2011-2022 走看看