您的位置:首页 > 移动开发 > Android开发

简单的自定义倒计时按钮

2016-01-29 14:49 429 查看


简单的倒计时自定义控件

(注:做项目过程中少不了发送验证码的功能,以前写的时候我都是直接写在Activity里面的,将逻辑代码和业务代码混在了一起,实在是low的不行);最近做了个简单的自定义倒计时控件,是对TextView的简单封装,实现了将业务和逻辑分开,并对外提供了简单设置点击前后背景变化的接口)
效果图如下:



代码比较简单:

<span style="font-size:14px;">public class CountDownButton extends TextView {
private int mTotolTime = 60;
private int mInterval = 1;
private int mNormalColor=0xffffaacc;//默认正常颜色
private int mDownColor=0xff999999;//按下的颜色
private OnClickListener mClickListener;
int temp;
private CountDownTimer mCountDownTimer;

public CountDownButton(Context context) {
super(context);
init();
}

public CountDownButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}

public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}

private void init() {
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setClickable(false);
startCountDown();

//                从外部实现接口,可以处理点击事件等,要处理的逻辑,比如点击时调用发送验证码的接口;倒计时,读秒不可点击等事件控件本身已经实现。
if(mClickListener!=null){
mClickListener.onClick(v);
}
}
});
}

public void setClickListener(OnClickListener listener){
mClickListener=listener;
}

//设置总时长
public void setTotolTime(int totolTime) {
mTotolTime = totolTime;
setText(mTotolTime+"秒后重新发送");
temp=totolTime;
}
//   设置时间间隔
public void setInvertal(int invertal) {
mInterval = invertal;
}

public void setNormalColor(int normalColor){
mNormalColor=normalColor;
}

public void setDownColor(int downColor){
mDownColor=downColor;
}

private void startCountDown() {

temp=mTotolTime;
if (mCountDownTimer == null) {
mCountDownTimer = new CountDownTimer(mTotolTime*1000, mInterval*1000) {
@Override
public void onTick(long millisUntilFinished) {
setText(--temp+"秒后重新发送");
setBackgroundColor(mDownColor);
}

@Override
public void onFinish() {
setText("重新发送");
setClickable(true);
setBackgroundColor(mNormalColor);
}
};
}
mCountDownTimer.start();
}

}</span>


下面是源代码:

http://download.csdn.net/detail/themelove/9422257


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android常见