1.新建一个项目:CuntDownTimer。
2.在activity_main.xml中添加button按钮。
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.cuntdowntimertest.MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击发送验证码"/>
</RelativeLayout>
3.创建一个名为TimeCountUtil的类(该类为计时器)
package com.example.cuntdowntimertest;
import android.os.CountDownTimer;
import android.widget.Button;
public class TimeCountUtil extends CountDownTimer{
private Button mButton;
//millisInFuture为总时长。countDownInterval多久执行一次回调
public TimeCountUtil(Button button, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.mButton = button;
}
@Override
public void onTick(long millisUntilFinished) {
// 按钮不可用
mButton.setEnabled(false);
String showText = millisUntilFinished / 1000 + "秒后可重新发送";
mButton.setText(showText);
}
@Override
public void onFinish() {
// 按钮设置可用
mButton.setEnabled(true);
mButton.setText("重新获取验证码");
}
}
4.主MainActivity的代码。
package com.example.cuntdowntimertest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button mButton;
private TimeCountUtil mTimeCountUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.button);
mTimeCountUtil = new TimeCountUtil(mButton, 5000, 1000);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTimeCountUtil.start();
// TODO 请求验证码
Toast.makeText(getApplicationContext(), "请求验证码", Toast.LENGTH_SHORT).show();
}
});
}
}
以上代码实现了简单的倒计时功能,按钮的样式比较简化,有兴趣的话,可对其做优化。 如有问题,望指正,大家共同进步。