获取验证码button,倒计时按钮,继承Button
来源:互联网 发布:ipad取消软件自动更新 编辑:程序博客网 时间:2024/06/06 09:46
import java.util.HashMap;import java.util.Map;import java.util.Timer;import java.util.TimerTask;import android.annotation.SuppressLint;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * * PS: 由于发现timer每次cancle()之后不能重新schedule方法,所以计时完毕只恐timer. 每次开始计时的时候重新设置timer, * 没想到好办法初次下策 注意把该类的onCreate()onDestroy()和activity的onCreate()onDestroy()同步处理 * */public class TimeButton extends Button implements OnClickListener {private long lenght = 60 * 1000;// 倒计时长度,这里给了默认60秒private String textafter = "秒后重新获取~";private String textbefore = "点击获取验证码~";private final String TIME = "time";private final String CTIME = "ctime";private OnClickListener mOnclickListener;private Timer t;private TimerTask tt;private long time;private boolean mobile = true;public void setPhone(boolean mobiles) {mobile = mobiles;}Map<String, Long> map = new HashMap<String, Long>();public TimeButton(Context context) {super(context);setOnClickListener(this);}public TimeButton(Context context, AttributeSet attrs) {super(context, attrs);setOnClickListener(this);}@SuppressLint("HandlerLeak")Handler han = new Handler() {public void handleMessage(android.os.Message msg) {TimeButton.this.setText(time / 1000 + textafter);TimeButton.this.setTextColor(getResources().getColor(R.color.gray));time -= 1000;if (time < 0) {TimeButton.this.setEnabled(true);TimeButton.this.setText("重新获取");TimeButton.this.setTextColor(getResources().getColor(R.color.hint_text));clearTimer();}};};private void initTimer() {time = lenght;t = new Timer();tt = new TimerTask() {@Overridepublic void run() {Log.e("yung", time / 1000 + "");han.sendEmptyMessage(0x01);}};}private void clearTimer() {if (tt != null) {tt.cancel();tt = null;}if (t != null)t.cancel();t = null;}@Overridepublic void setOnClickListener(OnClickListener l) {if (l instanceof TimeButton) {super.setOnClickListener(l);} elsethis.mOnclickListener = l;}@Overridepublic void onClick(View v) {if (mOnclickListener != null)mOnclickListener.onClick(v);if (mobile) {initTimer();this.setText(time / 1000 + textafter);this.setEnabled(false);t.schedule(tt, 0, 1000);}// t.scheduleAtFixedRate(task, delay, period);}/** * 和activity的onDestroy()方法同步 */public void onDestroy() {if (this.map == null)this.map = new HashMap<String, Long>();this.map.put(TIME, time);this.map.put(CTIME, System.currentTimeMillis());clearTimer();Log.e("yung", "onDestroy");}/** * 和activity的onCreate()方法同步 */public void onCreate(Bundle bundle) {Log.e("yung", this.map + "");if (this.map == null)return;if (this.map.size() <= 0)// 这里表示没有上次未完成的计时return;long time = System.currentTimeMillis() - this.map.get(CTIME)- this.map.get(TIME);this.map.clear();if (time > 0)return;else {initTimer();this.time = Math.abs(time);t.schedule(tt, 0, 1000);this.setText(time + textafter);this.setEnabled(false);}}/** * 设置计时时候显示的文本 */public TimeButton setTextAfter(String text1) {this.textafter = text1;return this;}/** * 设置点击之前的文本 */public TimeButton setTextBefore(String text0) {this.textbefore = text0;this.setText(textbefore);return this;}/** * 设置到计时长度 * * @param lenght * 时间 默认毫秒 * @return */public TimeButton setLenght(long lenght) {this.lenght = lenght;return this;}/***/}
0 0
- 获取验证码button,倒计时按钮,继承Button
- button获取验证码 点击倒计时
- 对安卓获取验证码倒计时60秒Button按钮的简单封装
- Android 点击Button获取验证码倒计时效果
- button倒计时,发送手机验证码可用
- Android实战简易教程-第四十一枪(显示倒计时的Button-适用于获取验证码)
- Android实战简易教程<四十一>(显示倒计时的Button-适用于获取验证码)
- Android 获取验证码后 在Button控件上 显示倒计时
- iOS 使用NSTimer写出Button获取验证码倒计时的效果
- Button控件实现发送验证码倒计时方法
- iOS短信验证码倒计时Button的实现
- 倒计时button
- 实现button按钮上的倒计时
- iOS倒计时按钮Button标题闪烁处理
- iOS倒计时按钮Button标题闪烁处理
- 点击按钮获取验证码,倒计时。
- android倒计时获取验证码按钮
- Android 获取验证码 倒计时按钮
- Linux下安装LoadRunner LoadGenerator
- bzoj1303(很好的数学题,考智商啊)
- Docker容器内的信号处理
- MJExtension对象归档
- Spring AOP,基于动态代理和字节码(CGLIB)区别
- 获取验证码button,倒计时按钮,继承Button
- IE9以上asp.net 不要使用 LinkButton和checkboxlist 两个控件
- java泛型详解 (转)
- Cookie简介及JSP处理Cookie的方法
- Mongoose使用案例
- Redis实践----安装部署篇
- webstorm mac版快捷键
- EventBus 3.0使用与源码分析
- 在C语言中*p++与(*p)++的区别