三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

PinView密码隐藏功能详解:setPasswordHidden与星号明文切换

PinView密码隐藏功能详解:setPasswordHidden与星号明文切换

PinView密码隐藏功能详解:setPasswordHidden与星号明文切换

【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView

在 Android 开发中,PIN 码、验证码和密码输入框几乎是每个 App 的刚需,而PinView 密码隐藏功能正是解决这类需求的最佳方案。PinView 是一个开源的 Android PIN 输入控件库,专为输入 PIN/OTP/验证码/密码等场景设计,它内置了强大的setPasswordHidden 方法,让开发者可以在星号隐藏明文显示之间一键切换,无需再手动处理复杂的输入法变换逻辑。本文将从零开始,带新手开发者快速掌握 PinView 密码隐藏与星号明文切换的完整用法。

PinView 是什么?为什么需要密码隐藏功能?

PinView 继承自 Android 原生 EditText,因此你熟悉的addTextChangedListenersetText等 API 全部可用。它把普通输入框升级为分格输入的 PIN 输入框:每个字符占据一个独立格子,支持矩形框、下划线、无边框三种视图类型,还能自定义颜色、圆角、间距等细节。

密码隐藏功能则是支付、银行、账号安全类 App 的标配:用户在输入密码时默认显示圆点或星号,点击"眼睛"图标后切换为明文,方便确认输入是否正确。PinView 通过setPasswordHidden()一行代码即可实现这个交互,这也是它相比手写自定义 View 的最大优势。

最核心的 API:setPasswordHidden 与 isPasswordHidden

PinView 的密码隐藏功能由两个方法组成,定义在核心类 PinView.java 中:

  • setPasswordHidden(boolean hidden)true表示隐藏密码(显示圆点),false表示显示明文;
  • isPasswordHidden():查询当前密码是否处于隐藏状态。

这两个方法让"PinView 星号与明文切换"变得极其简单——你只需要在点击"眼睛"按钮的回调里调用一次即可:

PinView pinView = findViewById(R.id.pinView); // 隐藏密码,显示为圆点 pinView.setPasswordHidden(true); // 显示明文 pinView.setPasswordHidden(false); // 查询当前状态 boolean hidden = pinView.isPasswordHidden();

调用后 PinView 会自动重新布局并立即刷新界面,无需额外调用invalidate()

一套代码实现"眼睛"图标明文切换

在实际 App 中,最常见的交互是"小眼睛"按钮:点击一次隐藏,再点一次显示。结合isPasswordHidden(),你可以轻松实现密码明文切换按钮

eyeButton.setOnClickListener(v -> { // 当前隐藏则显示明文,当前显示则隐藏 pinView.setPasswordHidden(!pinView.isPasswordHidden()); });

官方示例项目中的 SecondActivity.java 就展示了这一思路:通过 CheckBox 的选中状态调用setPasswordHidden(isChecked),实现密码隐藏与显示的实时切换,非常值得新手参考。

两种隐藏方式对比:setPasswordHidden vs TransformationMethod

有些开发者可能会问:既然 PinView 继承自 EditText,为什么不直接用系统自带的setTransformationMethod(new PasswordTransformationMethod())

这里需要重点说明:PinView 的密码隐藏有自己独立的实现。PinView 初始化时会执行setTransformationMethod(null)(见 PinView.java),并使用isPasswordHidden标志控制绘制逻辑——隐藏时调用drawCircle()绘制圆点,显示明文时调用drawText()绘制真实字符。

两种方式的区别:

对比项setPasswordHiddenPasswordTransformationMethod
调用方式一行代码,无需重建输入法需要手动管理 TransformationMethod 对象
字符样式绘制为圆点,视觉更统一绘制为星号(*)
兼容性PinView 内部处理,稳定可靠依赖系统文本变换,有兼容性风险
明文切换布尔值切换,简单直接需反复设置/清空 TransformationMethod

如果你确实想要**星号(*)**而不是圆点,也可以在示例项目 MainActivity.java 中看到一种自定义PasswordTransformationMethod的实现思路,供进阶开发参考。

PinView 密码隐藏常见问题解答

Q1:布局 XML 里怎么让 PinView 默认隐藏密码?很简单,设置android:inputType="numberPassword"textPassword,PinView 会自动识别密码输入类型并默认启用隐藏效果(见 PinView.java 的兼容逻辑)。

Q2:切换明文后,圆点能再变回来吗?能。setPasswordHidden(true)setPasswordHidden(false)可以无限次交替调用,状态互不干扰,这正是星号明文切换的核心价值。

Q3:PinView 如何集成到我的项目?PinView 已发布到 MavenCentral,在build.gradle中添加依赖即可:

implementation 'io.github.chaosleung:pinview:1.4.4'

结语

掌握PinView 密码隐藏功能,就等于拿到了 Android PIN/密码输入场景的"万能钥匙"。无论是支付密码、验证码,还是需要"眼睛"图标切换明文的登录表单,setPasswordHidden都能让你用最少的代码实现最专业的体验。现在就打开你的项目,试试这套星号明文切换方案吧!🎉

【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表