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. 用CSS给表格加边框

    很久之前,给表格加边框用的方法是给表格加上背景色,然后把cellspacing="1",再给td设置成另一种颜色,这样间接的加边框颜色. 一直没去细研究,今天发现了一种很简单的加边 ...

  2. Windows cmd 生成目录结构 dir /b,tree /f,xcopy

    >dir *.sh *.ksh *.java /s/b > list.txt >tree /f > list.txt >xcopy C:\folder\from_fold ...

  3. 学习 WebService 第二步:知识准备——WSDL文件解析

    原文地址:https://www.cnblogs.com/yzw23333/p/7245104.html Web service中一个 WSDL 对应一个 web service地址. 可以想象成一个 ...

  4. oracle 导出表结构信息

    直接贴sql: select cols.table_name 表名, cols.column_name 列名, cols.data_type 字段类型, cols.data_length 长度, co ...

  5. CSS 盒模型、解决方案、BFC 原理讲解--摘抄

    PS:内容比较基础,目的只是覆盖面试知识点,大佬可以 history.back(-1) W3C 标准盒模型 & IE 怪异盒模型 页面上显示的每个元素(包括内联元素)都可以看作一个盒子,即盒模 ...

  6. 反汇编角度->C++ const

    #include<iostream> #include<stdlib.h> using namespace std; const int &add( const int ...

  7. iOS-开发者账号失效后是否还可以打包

    参考链接:https://www.jianshu.com/p/601f596e8550

  8. 浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”

    回顾2018年的移动互联网,“社交裂变”“下沉”等成为年度关键词.一方面我们可以看到社交裂变助推用户增长,另一方面我们也看到了以拼多多.趣头条为代表的互联网企业对于社交裂变模式表现出的空前关注度.作为 ...

  9. Java爬虫系列二:使用HttpClient抓取页面HTML

    爬虫要想爬取需要的信息,首先第一步就要抓取到页面html内容,然后对html进行分析,获取想要的内容.上一篇随笔<Java爬虫系列一:写在开始前>中提到了HttpClient可以抓取页面内 ...

  10. GRDB使用SQLite的WAL模式

    GRDB使用SQLite的WAL模式   WAL全称是Write Ahead Logging,它是SQLite中实现原子事务的一种机制.该模式是从SQLite 3.7.0版本引入的.再此之前,SQLi ...