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) ...
随机推荐
- hihoCoder #1047 Random Tree
题意 给出点数为 $n$($n \le 1000$)的完全图 $K_n$,带边权.随机出 $K_n$ 的一棵生成树 $T$.求 $T$ 上任意两点间距离的期望. 解法 固定两点 $u$.$v$($u ...
- BZOJ2938 [Poi2000]病毒 【AC自动机】
题目 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段,试问,是否存在 ...
- Python Base Five
// 8 day(2016/8/11) 38. In python , it is oop. class Baskball: def setName(self, name): ...
- ubuntu登入死循环问题 解决!!
把/etc/environment文件中的 PATH="/usr/local//sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games" ...
- 計算 battery impedence
Origin 一顆電池被拉載後,會產生電流及電壓如下圖, 如何計算其電池內阻呢 其公式為 R = |delta(V) / delta(I)| 公式推導如下: V1 = 10 - I1R --- 左圖 ...
- HDU6214 Smallest Minimum Cut
题目链接:HDU6214 留一个链式前向星+Dinic模板(希望不要被某人发现,嘿嘿嘿). #include <cstdio> #include <cstring> #incl ...
- GitHub 上受欢迎的 Android UI Library 整理(一)
抽屉菜单 https://github.com/mikepenz/MaterialDrawer ★7337 - 安卓抽屉效果实现方案https://github.com/Yalantis/Side-M ...
- 查找系列合集-二叉查找树BST
一. 二叉树 1. 什么是二叉树? 在计算机科学中,二叉树是每个结点最多有两个子树的树结构. 通常子树被称作“左子树”(left subtree)和“右子树”(right subtree). 二叉树常 ...
- Unity3d Inspector面板实现set/get访问器
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using Un ...
- Windows系统Python包的安装
本文针对于Python初学者,Python老鸟请绕道. 最近同时尝试在Windows10.MacOS.Ubuntu三个系统上安装Python相关的包,整体比较,Ubuntu最简单,Windows10最 ...