本文用 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,本人稍加整理。