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; } }