本文實例為大家分享了Android獲取驗證碼倒計時的具體代碼,供大家參考,具體內容如下
1. 驗證碼輸入框和獲取驗證碼按鈕布局
xml代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
< 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代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/** * 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. 倒計時函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//倒計時函數 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. 清除倒計時函數,解決驗證碼輸入正確后停止計時
1
2
3
4
5
6
7
8
9
10
|
private void clearTimer() { if (task != null ) { task.cancel(); task = null ; } if (timer != null ) { timer.cancel(); timer = null ; } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/qq_36478920/article/details/78326305