本文实例为大家分享了Android自定义倒计时按钮的具体代码,供大家参考,具体内容如下
效果
代码:
package com.dylan.frame.ui;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import java.util.Timer;
import java.util.TimerTask;
public class CountdownButton extends Button implements View.onClickListener {
private long lenght = 60 * 1000;//默认倒计时时间;
private long time;//倒计时时长
private Timer timer;//开始执行倒计时
private TimerTask timerTask;//每次倒计时执行的任务
private String beforeText = "点击获取验证码";
private String afterText = "秒后重新获取";
private onClickListener onClickListener;//按钮点击事件
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
CountdownButton.this.setText(time / 1000 + afterText);
time -= 1000;
if (time < 0) {
CountdownButton.this.setEnabled(true);
CountdownButton.this.setText(beforeText);
clearTimer();
}
}
};
public CountdownButton(Context context) {
super(context);
this.setText(beforeText);
setonClickListener(this);
}
public CountdownButton(Context context, AttributeSet attrs) {
super(context, attrs);
setonClickListener(this);
}
public CountdownButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setonClickListener(this);
}
private void clearTimer() {
if (timerTask != null) {
timerTask.cancel();
timerTask = null;
}
if (timer != null) {
timer.cancel();
timer = null;
}
}
public void setLenght(long lenght) {
this.lenght = lenght;
}
public void setBeforeText(String beforeText) {
this.beforeText = beforeText;
}
public void setAfterText(String afterText) {
this.afterText = afterText;
}
@Override
public void onClick(View v) {
if (onClickListener != null) {
onClickListener.onClick(v);
}
initTimer();
this.setText(time / 1000 + afterText);
this.setEnabled(false);
timer.schedule(timerTask, 0, 1000);
}
private void initTimer() {
time = lenght;
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
};
}
@Override
public void setonClickListener(onClickListener onclickListener) {
if (onclickListener instanceof CountdownButton) {
super.setonClickListener(onclickListener);
} else {
this.onClickListener = onclickListener;
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



