文章目录
- 手机号
- 验证码
- 密码
在我们的项目中,获取验证码、手机号验证以及密码输入是很常见的小功能。
手机号1. 布局文件
2. 校验手机号
/**
* 匹配手机号的规则:[356789]是手机号第二位可能出现的数字
*/
public static final String REGEX_MOBILE = "^[1][356789][0-9]{9}$";
/**
* 校验手机号
* @param mobile
* @return 校验通过返回true,否则返回false
*/
public static boolean isMobile(String mobile) {
return Pattern.matches(REGEX_MOBILE, mobile);
}
验证码
方式一 1.TimeCountDown.java
public class TimeCountDown extends AppCompatTextView {
private static final String TAG = TimeCountDown.class.getSimpleName();
private static final int COUNT_DOWN_START = 1;//开始计时
private static final int COUNT_DOWN_LOADING = 2;//计数中
private static final int COUNT_DOWN_FINISH = 3;//计数完成
private static final int COUNT_DOWN_ERROR = 4;//计数出错
/**
* 倒计时时间为60 s
*/
private int countTime = 60;
/**
* 变量,用来计数当前倒计时的时间
*/
private int mCount;
/**
* 倒计时之前显示的文字
*/
private String beforeCount = "获取验证码";
/**
* 倒计时之后显示的文字
*/
private String afterCount = "秒";
/**
* handler
*/
private Handler mHandler;
private Timer mTimer;
private TimerTask mTimerTask;
private OnTimerCountDownListener onTimerCountDownListener;
public TimeCountDown(Context context) {
super(context);
init();
}
public TimeCountDown(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void init() {
mCount = countTime;
setText(beforeCount);
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case COUNT_DOWN_START:
if (null != onTimerCountDownListener) {
onTimerCountDownListener.onCountDownStart();
}
mCount--;
break;
case COUNT_DOWN_LOADING:
if (null != onTimerCountDownListener) {
onTimerCountDownListener.onCountDownLoading(mCount);
}
setText(msg.arg1 + afterCount);
mCount--;
break;
case COUNT_DOWN_FINISH:
if (null != onTimerCountDownListener) {
onTimerCountDownListener.onCountDownFinish();
}
if (mCount = 0;i--) {
final int second = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
if (second
toggle_pwd_selector.xml
2. 代码使用
public class MainActivity extends AppCompatActivity {
private EditText mPwd;
private ToggleButton mShowPwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPwd = findViewById(R.id.edt_Pwd);
mShowPwd = findViewById(R.id.tb_show);
mShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
//如果选中,显示密码
mPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
//否则隐藏密码
mPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
}
}