先上两张效果图
时间的变化我采用的是handler延迟一秒发送一个消息。在消息体内再次发送一个消息,实现消息体的循环。 private int number=30; Handler handler=new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { if (number>1) { number--; System.err.println(number); button.setText(number+"秒后重新发送"); button.setEnabled(false); handler.sendEmptyMessageDelayed(0, 1000); }else { button.setText("重新发送"); button.setEnabled(true); number=30; } return false; } }); 获取验证码的方法可以在start按钮的点击事件中调用。 最后贴上全部代码. package com.example.timerdemo1; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private int number=30; Handler handler=new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { if (number>1) { number--; System.err.println(number); button.setText(number+"秒后重新发送"); button.setEnabled(false); handler.sendEmptyMessageDelayed(0, 1000); }else { button.setText("重新发送"); button.setEnabled(true); number=30; } return false; } }); private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.title); } public void start(View v){ handler.sendEmptyMessageDelayed(0, 1000); } }