获取验证码已经成了每个app必然的步骤,倒计时简单但繁琐,而且影响代码的美观,所以我写了一个倒计时类,以便使用
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
/**
* Created by 郭月森 on 2018/12/13.
*/
public class ThendTimeUtil {
/**
*
* @param time 倒计时秒数
* @param timeBack 回调接口
*/
public static void Therd(@NonNull int time,@NonNull timeBack timeBack){
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {//为避免在回调接口直接刷新UI报错,所以使用了handler
super.handleMessage(msg);
timeBack.back(msg.what,msg.what==0?true:false);//通知页面
}
};
new Thread(new Runnable() {
@Override
public void run() {
int a = time;
while (a!=-1){
try {
Message message = new Message();
message.what = a;
handler.sendMessage(message);
Thread.sleep(1000);
a--;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
public interface timeBack{
/**
*
* @param time 当前秒数
* @param n 倒计时是否结束
*/
void back(int time,boolean n);
}
}
内容非常少,缺很实用。使用也方便
ThendTimeUtil.Therd(60, new ThendTimeUtil.timeBack() {
@Override
public void back(int time, boolean n) {
if (n){
inputCodeTime.setText("重发验证码");
}else {
inputCodeTime.setText(time+"S");
}
}
});