Android 短信验证码控件,便于项目中使用统一样式,统一提示改动。个人觉得挺好用的

<span style="font-size:18px;">public class SMSButton extends Button {
/** 是否展示 */
private boolean mAttached;
/** 发送验证码后等待的时间 */
private int delayTime = 60;
/** Button 上面的文本 */
private String showText = "获取";
/** Button 等待的时候显示的文本 */
private String delayText = FORMATETAG + "秒";
/** 如今是否在倒计时 */
private boolean isDelayed = false; private SMSOnClickListener clickListener; private int currentDelayTime = 0; private static final String FORMATETAG = "%d"; private Runnable mTimer = new Runnable() { @Override
public void run() {
currentDelayTime -= 1;
if (currentDelayTime <= 0) {
isDelayed = false;
setClickable(true);
setText(showText);
} else {
getHandler().postDelayed(mTimer, 1000);
setDelayTimeText(currentDelayTime);
}
}
}; private void setDelayTimeText(int time) {
setText(String.format(delayText, time));
} public SMSButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
} public SMSButton(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
} public SMSButton(Context context) {
super(context);
initView();
} @Override
public void setOnClickListener(OnClickListener l) {
super.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
if (!isDelayed) {// 假设没有在等待
if (clickListener != null) {
if (clickListener.validate()) {
setClickable(false);
isDelayed = true;
currentDelayTime = delayTime;
getHandler().post(mTimer);
clickListener.onClick();
}
}
}
}
});
} /**
* 初始化页面
*/
private void initView() {
String text = getText().toString().toString().trim();
if (text != null && !"".equals(text)) {
showText = text;
}
} @Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (!mAttached) {
mAttached = true;
setText(showText);
}
} @Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mAttached) {
mAttached = false;
isDelayed = false;
getHandler().removeCallbacks(mTimer);
}
} public int getDelayTime() {
return delayTime;
} public void setDelayTime(int delayTime) {
this.delayTime = delayTime;
} public String getShowText() {
return showText;
} public void setShowText(String showText) {
this.showText = showText;
} public String getDelayText() {
return delayText;
} public void setDelayText(String start, String end) {
this.delayText = start + FORMATETAG + end;
} public SMSOnClickListener getSMSOnClickListener() {
return clickListener;
} public void setSMSOnClickListener(SMSOnClickListener clickListener) {
setOnClickListener(null);
this.clickListener = clickListener;
} public interface SMSOnClickListener {
public boolean validate(); public void onClick();
}</span>

使用方法:

	/**
* 样例
*
* smsButton = (SMSButton) findViewById(R.id.smsButton);
* smsButton.setShowText("获取");
* smsButton.setDelayText("等", "秒"); smsButton.setSMSOnClickListener(new
* SMSOnClickListener() {
*
* @Override public boolean validate() { return true; }
* @Override public void onClick() {
* ToastUtil.getInstance().toastInCenter(LoadingActivity.this,
* "onClick"); } });
*/

Android 短信验证码控件的更多相关文章

  1. Android 短信验证码平台

    1.容联云通讯 (目前只支持国内.收费) http://www.yuntongxun.com/ 2.bmob (目前只支持国内.收费) http://www.bmob.cn/ 3.阿里大鱼(目前只支持 ...

  2. Android短信验证码倒计时

    有两种实现方法 1.第一种方式:Timer /** * Description:自定义Timer * <p> * Created by Mjj on 2016/12/4. */ publi ...

  3. Android学习笔记之短信验证码的获取和读取

    PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...

  4. Android之短信验证码

    我们今天所使用的方案仅仅是android手机设备集成短信验证码功能的方案之中的一个. 我们所採用的方案是使用聚合数据的短信验证sdk. 程序的界面例如以下所看到的: 实现步骤: 1.到聚合数据官网上申 ...

  5. Android自动读取短信验证码

    Android自动读取短信验证码  extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...

  6. 转载:Android自动化测试- 自动获取短信验证码

    前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...

  7. android自动获取短信验证码

    前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码.主要就是实时获取短信信息.android上获 ...

  8. Android Studio精彩案例(五)《JSMS短信验证码功能实现》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 很多应用刚打开的时候,让我们输入手机号,通过短信验证码来登录该应用.那么,这个场景是怎么实现的呢?其实是很多开放平台提供了短信验证功能 ...

  9. android发送短信验证码并自动获取验证码填充文本框

    android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com) ...

随机推荐

  1. 刷题总结——维护数列(NOI2005 bzoj1500 splay)

    题目: 题目背景 NOI2005 DAY1 T2 题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏中的下划线‘_’表示实际输入文件中的空格)

  2. 【python接口自动化】获取根目录

    将该方法放在根目录下面,在其他类中直接import 该方法. import os def getRootPath(): rootPath = os.path.dirname(os.path.abspa ...

  3. freemarker实现自定义指令和自定义函数

    自定义指令: 1.指令在前台实现 <#macro name param1,param2,param3...paramN> </#macro> 2.指令在后台实现 1.实现Tem ...

  4. COGS728. [网络流24题] 最小路径覆盖问题

    算法实现题8-3 最小路径覆盖问题(习题8-13) ´问题描述: 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中 ...

  5. es6总结(九)--Iterator & for of

  6. Atcoder CODE FESTIVAL 2017 qual B E - Popping Balls 组合计数

    题目链接 题意 \(A+B\)个球排成一行,左边\(A\)个为红球,右边\(B\)个为蓝球. 最开始可以选择两个数\(s,t\),每次操作可以取左起第\(1\)或\(s\)或\(t\)个球.问有多少种 ...

  7. 标准C程序设计七---116

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  8. 30深入理解C指针之---字符串和数组

    一.字符串与数组 1.定义:使用字符数组表示字符串 2.特征: 1).可以直接使用字符串字面量初始化字符数组 2).声明后,赋值就只能使用字符串操作函数strcpy函数赋值 3).可以使用数组的一一赋 ...

  9. poj 1573(搜索)

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12351   Accepted: 5982 Des ...

  10. Cryptography I 学习笔记 --- 流密码

    1. 对于一次性密码本(one time pad),没有唯密文攻击(cypher text only attack),也就是说如果攻击者只能拿到密文,他什么也做不了 2. 完美密码:密钥长度大于密文长 ...