同樣,為了防止用戶惡意的頻繁發送激活碼,應用中需要對用戶發送激活碼的時間間隔進行限制,這時就需要用到倒計時器了,大概流程是這樣的:頁面初始化的時候,按鈕為可點擊狀態,用戶在點擊“發送激活碼”后按鈕變為不可點擊狀態,同時按鈕上的文字變為倒計時狀態,倒計時結束后,按鈕變為可點擊狀態,文字變為“發送激活碼”。具體邏輯看下面的代碼:
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private TimeCount timeCount;
private Button btn_reget_captcha;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
initView();
initData();
}
private void initData() {
timeCount = new TimeCount(60000, 1000);
}
private void initView() {
btn_reget_captcha = (Button) findViewById(R.id.btn_reget_captcha);
btn_reget_captcha.setOnClickListener(this);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btn_reget_captcha:
if (btn_reget_captcha.isClickable()) {
// TODO run your logic that you want to do
timeCount.start();
}
break;
default:
break;
}
}
class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
btn_reget_captcha.setText("發送激活碼");
btn_reget_captcha.setClickable(true);
}
public void onTick(long millisUntilFinished) {
btn_reget_captcha.setClickable(false);
btn_reget_captcha.setText("在" + millisUntilFinished / 1000 + "秒后點擊重發激活碼");
}
}
}
|
新聞熱點
疑難解答
圖片精選