Android studio—密码规范与密码小眼睛
本文主要对博主曾经的博客:Android studio—SQLite修改密码的功能进行进一步完善。除了原有的修改密码,注销账户功能外。
本次加入:1、规范密码:6-16位且开头为英语+数字组合
2、密码开头为大写3
3、密码小眼睛:可见与不可见
回顾博客
Android studio—SQlite数据库注册登录:https://blog.youkuaiyun.com/genijmni/article/details/106626300
Android studio—SQlite修改密码:https://blog.youkuaiyun.com/genijmni/article/details/106697445
Android studio—SQlite注销账号(删除账号):https://blog.youkuaiyun.com/genijmni/article/details/106698703
Android studio—登录注册功能实用技巧:https://blog.youkuaiyun.com/genijmni/article/details/106699294
具体功能完善
1、规范密码:6-16位且开头为英语+数字组合
2、密码开头为大写3
3、密码小眼睛:可见与不可见
效果预览
规范密码
通过对密码规范制定规则,以提高密码的安全性。
和规定手机号码一样,我们需要指定我们想要的规则:[A-Z]+[0-9A-Za-z]{6,16}
String regex="^(?=[A-Z])[0-9A-Za-z]{6,16}$";
在这里我们还需要了解一下JAVA中的一些规定:
- (?=rule)表示正排序下,该位必须匹配rule
- (?!rule)表示正排序序下,该位必须不能匹配rule
- (?<=rule)表示用在末尾必须匹配rule
- (?<!rule)表示用在末尾必须不能匹配rule
如果你想要首位不必大写字母:
String regex="^(?=[A-Za-z])[0-9A-Za-z]{6,16}$";
在此基础上进行更改即可
通过这个规则完成:6-16位,开头为大写英文字母+数字组合
规则书写在主类之中,写在onCreate方法之外
public boolean isContainAll(String string){
String regex="^(?=[A-Z])[0-9A-Za-z]{6,16}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher= pattern.matcher(string);
boolean isMatch=matcher.matches();
return isMatch;
}
完成规则定义后,还需要进行正确的系统提示:
需要在XML文件新建一个TextView控件作为提示输出
if (isContainAll(password)==false)
{
watch.setText("密码不得少于6位,且需要开头字母+数字组合");
}
密码的规范到这,就大致完成了。
密码小眼睛
常用App的密码选项中,在右侧有一个小眼睛,方便用户对密码的可见和不可见进行操作。
我们需要怎么完成了,首先,我们需要在drawable中添加两张照片,一张是开眼,一张时闭眼:
由于我这是网上截图的小眼睛(若侵权,请告知,我会删除)
随后我们需要先在布局文件中添加一个ImagView图片控件,放在密码栏右侧
<ImageView
android:layout_width="0dp"
android:id="@+id/eye"
android:layout_weight="1"
android:layout_marginTop="30dp"
android:layout_height="wrap_content"/>
随后在JAVA文件中对控件定义,并将密码密码先为隐藏:
private boolean hide =true; //设置为隐藏
private ImageView eye; //定义控件
eye = findViewById(R.id.eye); //绑定控件
eye.setImageResource(R.drawable.close); //选择初始样貌为闭眼
这样准备阶段完成,后分别定义密码可见和密码不可见状态。
密码可见和不可见
通过switch方法,对可见和不可见进行选择:
eye.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.eye:
if (hide == true){
eye.setImageResource(R.drawable.open); //可见样貌
HideReturnsTransformationMethod method = HideReturnsTransformationMethod.getInstance(); //可见
userpassword.setTransformationMethod(method);
hide = false;
}else{
eye.setImageResource(R.drawable.close); 不可见样貌
TransformationMethod method = PasswordTransformationMethod.getInstance(); //隐藏
userpassword.setTransformationMethod(method);
hide = true;
}
int index = userpassword.getText().toString().length();
userpassword.setSelection(index);
break;
}
}
});
如此就能完成密码小眼睛可见不可见功能。