每一个App都少不了登录模块
登录模块的校验其实都是后端来进行处理的,移动端要做的工作相对较少
重要的一个环节就是为密码添加隐藏和显示这个基本的功能
我们一般写密码输入框时都会使用Edittext来进行输入操作
edittext提供了setTransformationMethod这个API来进行输入字符的转换
//隐藏回车
etRegisterPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
//不能用换行回车
etRegisterPassword.setTransformationMethod(SingleLineTransformationMethod.getInstance());
//密码类型
etRegisterPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
ReplacementTransformationMethod是一个抽象类,前面两个都是继承于这个抽象类,很明显就是替换,我们可以自己继承这个类实现自己需要的TransformationMethod
献上一份将密码转换为*字符的转换类
/**
* Author:29117
* Time: 2019-3-20. 下午 6:31
* Email:2911743255@qq.com
* ClassName: AsteriskPasswordTransformationMethod
* Description:输入密码变为***
*/
public class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private class PasswordCharSequence implements CharSequence {
private CharSequence mSource;
public PasswordCharSequence(CharSequence source) {
mSource = source; // Store char sequence
}
@Override
public char charAt(int index) {
return '*'; // This is the important part
}
@Override
public int length() {
return mSource.length(); // Return default
}
@Override
public CharSequence subSequence(int start, int end) {
return mSource.subSequence(start, end); // Return default
}
}
}
隐藏密码:
etRegisterPassword.setTransformationMethod(new AsteriskPasswordTransformationMethod());//隐藏密码
显示密码:
etRegisterPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//显示密码
再献上一份大小写转换的工具
public class AllCapTransformationMethod extends ReplacementTransformationMethod {
@Override
protected char[] getOriginal() {
char[] aa = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
return aa;
}
@Override
protected char[] getReplacement() {
char[] cc = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
return cc;
}
}
大小写转换:
editText.setTransformationMethod(new AllCapTransformationMethod());