首页 > 其他分享 >AndroidStudio设置密码可见不可见

AndroidStudio设置密码可见不可见

时间:2023-12-16 18:31:47浏览次数:27  
标签:passwordEditText private 密码 AndroidStudio 可见 visibilityButton isPasswordVisible

这里我们写一个在登录demo中常见的功能,当点击眼睛图片时,使密码可见或不可见,即形成一种保护,也防止了我们输入错误密码情况的出现,是很友好的一个功能。

两张图片:

睁眼:

AndroidStudio设置密码可见不可见_java

闭眼:

AndroidStudio设置密码可见不可见_java_02

大家记得复制粘贴到drawable.xml文件中。

注意一下命名规则,推荐:see.png和nosee.png。

然后,我们去写一下布局的代码:

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/password_edit_text"
            android:layout_width="363dp"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:hint="Password" />

        <ImageButton
            android:id="@+id/visibility_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignEnd="@id/password_edit_text"
            android:layout_alignBottom="@id/password_edit_text"
            android:background="@android:color/transparent"
            android:src="@drawable/nosee" />
    </LinearLayout>

由于每个人module的版本不一样,呈现的效果会有一定的偏差,大小位置等可以自行调整。

功能实现部分:

public class MainActivity extends AppCompatActivity {

private EditText passwordEditText;
private ImageButton visibilityButton;
private boolean isPasswordVisible = false;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        passwordEditText = findViewById(R.id.password_edit_text);
        visibilityButton = findViewById(R.id.visibility_button);
        visibilityButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                togglePasswordVisibility();
            }
        });
    }
    private void togglePasswordVisibility() {
        if (isPasswordVisible) {
            // 设置密码不可见
            passwordEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
            visibilityButton.setImageResource(R.drawable.nosee);
        } else {
            // 设置密码可见
            passwordEditText.setTransformationMethod(null);
            visibilityButton.setImageResource(R.drawable.see);
        }

        // 移动光标到文本末尾
        passwordEditText.setSelection(passwordEditText.getText().length());

        // 更新密码可见状态
        isPasswordVisible = !isPasswordVisible;
    }
}

最后运行的效果如下:

AndroidStudio设置密码可见不可见_密码可见不可见_03

标签:passwordEditText,private,密码,AndroidStudio,可见,visibilityButton,isPasswordVisible
From: https://blog.51cto.com/u_16174658/8853503

相关文章

  • MySQL 8 密码验证组件
    验证密码(validate_password)组件通过要求输入账户密码和对潜在密码进行强度测试来提高安全性。在MySQL8.0中,validate_password插件是以validate_password组件的方式实现的。插件的方式仍然可以实用,但是已经过期,未来可能被移除。validate_password提供了一个函数validate_pas......
  • gitlabrunner之executor配置拉取镜像的账户密码
    dockerexecutor$catconfig.toml......[[runners]]environment=["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.xxx.com\":{\"auth\":\"dmlwZXIucm9ib3QuZG9ja2VyOlNUYWkyMDIzLm\"}}}"]......k8sexec......
  • 网络设备和光猫初始密码
    光猫后台账号和密码1、电信超级密码telecomadminnE7jA%5m2、移动超级密码CMCCAdminaDm8H%MdA3、联通超级密码CUAdminCUAdmin 网络设备账号和密码、默认管理地址1.天融信登录地址:https://192.168.1.254 用户名:superman 密码:talent或talent!23 技术支持热线......
  • 忘记root密码解决方法
    起因:很久之前创建的一台Linux虚拟机忘记密码 解决方法:1、重启2、这个界面按e,进入编辑界面 3、在linux16这一行后面加入内容:init=/bin/sh4、按Ctrl+X进入单用户模式5、单用户模式下挂载根目录mount-oremount,rw/6、修改root用户密码,需要输入两次第一次:......
  • 第七章 数字签名和认证协议 —— 现代密码学(杨波)复习题
    第七章一、填空1.两个用户通信时在建立密钥的过程中需要考虑的核心问题是_____________和_____________2.保证消息实时性常用___________和____________两种方法。3.单向认证中只关心保密性的认证方式是_______________________4.一次口令认证协议S/KEY中,如果当前系统存......
  • shell补-特殊玩法-批量修改密码
    shell补-特殊玩法-批量修改密码写一个脚本批量添加用户和随机密码root@localhostusr]#bashrandomadduser.sh更改用户mrrxu00001的密码。passwd:所有的身份验证令牌已经成功更新。更改用户mrrxu00002的密码。passwd:所有的身份验证令牌已经成功更新。更改用户mrr......
  • 第六章 消息认证和哈希函数 —— 现代密码学(杨波)复习题
    第六章一、填空1.通信双方A和B通信,则可能发生哪两种形式的抵赖或欺骗?2.数字签名能够抵抗不可否认性攻击的原因是________________________________3.基于公钥加密的数字签名方式中,加密的消息应该是________________________4.直接方式的数字签名的公共弱点是______________......
  • 第五章 密钥分配与密钥管理 —— 现代密码学(杨波)复习题
    第五章一、填空:1.消息认证中认证符的产生有哪两大类________________和_________________2.消息认证码和杂凑函数的算法都是公开的,其根本区别是_________________3.MAC与加密算法的区别在于_____________________4.某MAC算法输出长度为64bit,认证密钥为160bit,则对MAC的穷......
  • 第三章 分组密码体制 —— 现代密码学(杨波)复习题
    第三章 一、填空1.分组密码中的代换是一种从明文空间到密文空间的一一映射,如果明密文的长度均为n比特则不同的可逆代换有多少个_______2.从易于实现、提高速度和节省软硬件资源的角度看,加解密算法应具有什么样的特性____3.一般情况下,一个nbit代换结构其密钥量是________......
  • 量子计算对密码学的威胁及应对方式
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。当量子计算机问世时,许多加密方式将慢慢失去效果。本文将阐述原因以及正在研究的后量子密码学,以帮助人们适应后量子时代的密码学。量子计算机的......