Android 短信验证码控件
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 短信验证码控件的更多相关文章
- Android 短信验证码平台
1.容联云通讯 (目前只支持国内.收费) http://www.yuntongxun.com/ 2.bmob (目前只支持国内.收费) http://www.bmob.cn/ 3.阿里大鱼(目前只支持 ...
- Android短信验证码倒计时
有两种实现方法 1.第一种方式:Timer /** * Description:自定义Timer * <p> * Created by Mjj on 2016/12/4. */ publi ...
- Android学习笔记之短信验证码的获取和读取
PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...
- Android之短信验证码
我们今天所使用的方案仅仅是android手机设备集成短信验证码功能的方案之中的一个. 我们所採用的方案是使用聚合数据的短信验证sdk. 程序的界面例如以下所看到的: 实现步骤: 1.到聚合数据官网上申 ...
- Android自动读取短信验证码
Android自动读取短信验证码 extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...
- 转载:Android自动化测试- 自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...
- android自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码.主要就是实时获取短信信息.android上获 ...
- Android Studio精彩案例(五)《JSMS短信验证码功能实现》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 很多应用刚打开的时候,让我们输入手机号,通过短信验证码来登录该应用.那么,这个场景是怎么实现的呢?其实是很多开放平台提供了短信验证功能 ...
- android发送短信验证码并自动获取验证码填充文本框
android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com) ...
随机推荐
- 刷题总结——维护数列(NOI2005 bzoj1500 splay)
题目: 题目背景 NOI2005 DAY1 T2 题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏中的下划线‘_’表示实际输入文件中的空格)
- 【python接口自动化】获取根目录
将该方法放在根目录下面,在其他类中直接import 该方法. import os def getRootPath(): rootPath = os.path.dirname(os.path.abspa ...
- freemarker实现自定义指令和自定义函数
自定义指令: 1.指令在前台实现 <#macro name param1,param2,param3...paramN> </#macro> 2.指令在后台实现 1.实现Tem ...
- COGS728. [网络流24题] 最小路径覆盖问题
算法实现题8-3 最小路径覆盖问题(习题8-13) ´问题描述: 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中 ...
- es6总结(九)--Iterator & for of
- Atcoder CODE FESTIVAL 2017 qual B E - Popping Balls 组合计数
题目链接 题意 \(A+B\)个球排成一行,左边\(A\)个为红球,右边\(B\)个为蓝球. 最开始可以选择两个数\(s,t\),每次操作可以取左起第\(1\)或\(s\)或\(t\)个球.问有多少种 ...
- 标准C程序设计七---116
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 30深入理解C指针之---字符串和数组
一.字符串与数组 1.定义:使用字符数组表示字符串 2.特征: 1).可以直接使用字符串字面量初始化字符数组 2).声明后,赋值就只能使用字符串操作函数strcpy函数赋值 3).可以使用数组的一一赋 ...
- poj 1573(搜索)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12351 Accepted: 5982 Des ...
- Cryptography I 学习笔记 --- 流密码
1. 对于一次性密码本(one time pad),没有唯密文攻击(cypher text only attack),也就是说如果攻击者只能拿到密文,他什么也做不了 2. 完美密码:密钥长度大于密文长 ...