APP中注册时常用的发送验证码的Button,带倒计时重发功能

finddreams: 注册时我们经常会碰到,给手机发送验证码的功能,,点击发送验证码,然后就是显示剩余多少秒之后重新发送验证码,效果图如下:

为了实现这样的效果,当用户点击发送验证码时,显示为剩余多少秒重新发送,同时设置这个Button的状态为不可点击,所以是个灰色背景。等倒计时完了之后,把Button的状态置为可以点击状态。Android中内置的普通的Button是达不到要求的,我们需要拓展,所以需要自定义一个Button,代码如下:

/** * @Description:发送验证码的button,带有倒计时,以及在发送的过程中不可点击; * 调用方式 view.startTickWork()方法即可; * @author */{DISABLE_TIME = 60;MSG_TICK = 0;private Timer mTimer = null;private TimerTask mTask = null;mEnableColor = Color.WHITE;private int mDisableColor = Color.GRAY;private String mEnableString = “获取验证码”;private String mDisableString = “剩余”;private String Second = “秒”;private boolean mClickBle = true;private SendValidateButtonListener mListener = null;() {return mDisableTime;}() {return mEnableColor;}(int mEnableColor) {this.mEnableColor = mEnableColor;this.setTextColor(mEnableColor);}() {return mDisableColor;}(int mDisableColor) {this.mDisableColor = mDisableColor;}public String getmEnableString() {return mEnableString;}() {if (mDisableTime > 0) {return true;}return false;}(String mEnableString) {this.mEnableString = mEnableString;if (this.mEnableString != null) {this.setText(mEnableString);}}public String getmDisableString() {return mDisableString;}(String mDisableString) {this.mDisableString = mDisableString;}(SendValidateButtonListener mListener) {this.mListener = mListener;}private Handler mHandler = new Handler(Looper.getMainLooper()) {(Message msg) {switch (msg.what) {case MSG_TICK:tickWork();break;default:break;}super.handleMessage(msg);}};public SendValidateButton(Context context, AttributeSet attrs) {super(context, attrs);initView();}() {this.setText(mEnableString);this.setGravity(Gravity.CENTER);this.setTextColor(mEnableColor);initTimer();this.setOnClickListener(new OnClickListener() {(View v) {if (mListener != null && mClickBle){// startTickWork();mListener.onClickSendValidateButton();}}});}() {mTimer = new Timer();}() {mTask = new TimerTask(){(){mHandler.sendEmptyMessage(MSG_TICK);}};}() {if (mClickBle) {mClickBle = false;SendValidateButton.this.setText(mDisableString + mDisableTime+ Second);this.setEnabled(false);SendValidateButton.this.setTextColor(mDisableColor);initTimerTask();mTimer.schedule(mTask, 0, 1000);}}/*** 每秒钟调用一次*/() {mDisableTime–;this.setText(mDisableString + mDisableTime + Second);if (mListener != null){mListener.onTick();}if (mDisableTime <= 0){stopTickWork();}}() {mTask.cancel();mTask = null;mDisableTime = DISABLE_TIME;this.setText(mEnableString);this.setTextColor(mEnableColor);this.setEnabled(true);mClickBle = true;}{();();}}然后我们只需要在用到地方引用一下即可:<android:id=”@id/getcode_btn”android:textColor=”@color/white”android:layout_width=”wrap_content”android:layout_height=”match_parent”android:padding=”5dip”android:background=”@drawable/bg_btn_shape_login”android:text=”发送验证码”android:textSize=”16sp” />我们来看一下自定义Button的background的选择器bg_btn_shape_login.xml是如何做的:========>======>=======>======></item></selector>这样就可以实现发送验证码的Button功能了,是不是很简单?当然应该还是有其他实现形式的,大家有兴趣的话可以自己去琢磨一下。

积极的人在每一次忧患中都看到一个机会,

APP中注册时常用的发送验证码的Button,带倒计时重发功能

相关文章:

你感兴趣的文章:

标签云: