標籤:
本文用 Android 中的 CountDownTimer 類實現倒計時功能,類似輸入手機號獲得驗證碼。介面如下所示:
1. 點擊 “開始計時” 按鈕後開始進行倒計時,
2. 倒計時過程:
3. 時間結束後按鈕變為 “重新驗證”,點擊後重新開始計時。
功能很簡單,Java 代碼如下:
public class MainActivity extends Activity { private TimeCount time; private Button checking; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); time = new TimeCount(60000, 1000);// 建立CountDownTimer對象(設定時間為60秒) checking = (Button) findViewById(R.id.button1); checking.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { time.start();// 開始計時 } }); } /** * 倒計時內部類 */ class TimeCount extends CountDownTimer { public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval);// 參數:總時間長度,計時間隔 } @Override public void onFinish() {// 計時完畢時觸發 checking.setText("重新驗證"); checking.setClickable(true); } @Override public void onTick(long millisUntilFinished){// 計時過程顯示 checking.setClickable(false); checking.setText(millisUntilFinished /1000 + "秒"); } }}
布局代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.testandroid.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/phone_number" /> <EditText android:hint="@string/input_number" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/begin" /></LinearLayout>
主要來自:http://www.cnblogs.com/-cyb/archive/2011/12/18/Android_CountDownTimer.html,本人稍加整理。
Android CountDownTimer 類實現倒計時