PinView API参考速查手册:全部属性与方法一表看懂
PinView API参考速查手册:全部属性与方法一表看懂
【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView
PinView 是 GitHub 加速计划 / pin 项目下的一个轻量级 Android PIN 输入组件库,专门用于输入 PIN 码、OTP 验证码和密码,支持 Android 4.1(API 16)及以上版本。本文为你整理了一份 PinView API 参考速查手册,把它的全部 XML 属性、Java/Kotlin 方法、默认值和应用场景浓缩成一张表,无论你是刚接触验证码输入控件的新手,还是想快速上手的 Android 开发者,都能一表看懂、拿来即用。
一分钟快速认识 PinView:Android 验证码输入控件是什么?
PinView 本质上是继承自AppCompatEditText的自定义控件,因此它天然拥有 EditText 的全部能力(监听输入、设置字体、处理焦点等),同时额外提供了"格子式"的 PIN 码展示逻辑。核心源码位于 PinView.java,全部 XML 属性声明在 attrs.xml 中。
它的最大特色是viewType 三种显示模式:rectangle(方框)、line(下划线)、none(无边框),加上可自定义的光标、圆角、间距和选中态高亮,足以覆盖绝大多数支付、登录、验证码场景的 UI 需求。
最简单的接入步骤:添加依赖并放入布局
在build.gradle中添加依赖(Maven Central):
dependencies { implementation 'io.github.chaosleung:pinview:1.4.4' }然后在布局中直接使用:
<com.chaos.view.PinView android:id="@+id/pinView" style="@style/PinWidget.PinView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" app:itemCount="4" app:viewType="rectangle" />完整的示例布局可参考 activity_main.xml,Java 调用示例在 MainActivity.java。
PinView 全部 XML 属性速查表
下表汇总了 PinView 的所有自定义属性、类型、默认值及作用,默认值定义在 dimens.xml 中:
| 属性 | 类型 | 默认值 | 作用说明 |
|---|---|---|---|
app:itemCount | integer | 4 | PIN 码总长度(位数) |
app:itemWidth | dimension | 48dp | 每个格子的宽度 |
app:itemHeight | dimension | 48dp | 每个格子的高度 |
app:itemRadius | dimension | 5dp | 格子的圆角半径 |
app:itemSpacing | dimension | 5dp | 格子之间的间距 |
app:lineWidth | dimension | 2dp | 边框/下划线的宽度 |
app:lineColor | color/colorStateList | 文本色 | 边框颜色,支持状态选择器 |
app:viewType | enum | rectangle | 显示模式:rectangle / line / none |
android:cursorVisible | boolean | true | 是否显示输入光标 |
app:cursorWidth | dimension | 2dp | 光标宽度 |
app:cursorColor | color | 文本色 | 光标颜色 |
android:itemBackground | reference | 无 | 格子背景(Drawable) |
app:hideLineWhenFilled | boolean | false | 输入后是否隐藏该格边框 |
viewType 三种显示样式怎么选?
- rectangle(方框):最常用的验证码样式,适合登录、支付验证码;
- line(下划线):清爽的输入线条风格,适合注册/登录表单;
- none(无边框):配合背景图片或纯文字展示,定制空间最大。
lineColor 选中态高亮配置技巧
想实现"当前输入格高亮"效果,可以用状态选择器(selector),配合state_selected状态:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/line_selected" android:state_selected="true" /> <item android:color="@color/line_focused" android:state_focused="true" /> <item android:color="@color/line_default" /> </selector>再在 XML 中设置android:cursorVisible="true"即可,示例颜色资源见 sample 模块的line_colors.xml。
PinView 常用方法速查表:Java/Kotlin API 一表看懂
PinView 的公开方法同样简洁,全部位于 PinView.java:
| 方法 | 作用说明 |
|---|---|
setItemCount(int)/getItemCount() | 动态设置/读取 PIN 长度 |
setItemWidth(int)/getItemWidth() | 设置/读取格子宽度 |
setItemHeight(int)/getItemHeight() | 设置/读取格子高度 |
setItemRadius(int)/getItemRadius() | 设置/读取圆角半径 |
setItemSpacing(int)/getItemSpacing() | 设置/读取格子间距 |
setLineWidth(int)/getLineWidth() | 设置/读取边框宽度 |
setLineColor(int)/setLineColor(ColorStateList) | 设置边框颜色(单色或状态色) |
getLineColors()/getCurrentLineColor() | 读取状态色列表 / 当前颜色 |
setAnimationEnable(boolean) | 开启输入文字时的缩放动画 |
setHideLineWhenFilled(boolean) | 输入后隐藏对应格边框 |
setItemBackground(Drawable) | 设置格子背景图 |
setItemBackgroundColor(int) | 设置格子背景纯色 |
setItemBackgroundResources(int) | 通过资源 ID 设置格子背景 |
setCursorVisible(boolean)/isCursorVisible() | 控制光标显示 |
setCursorColor(int)/getCursorColor() | 设置/读取光标颜色 |
setCursorWidth(int)/getCursorWidth() | 设置/读取光标宽度 |
setPasswordHidden(boolean)/isPasswordHidden() | 程序化切换明文/密文显示 |
setTypeface(Typeface) | 设置字体(同步动画画笔) |
代码动态配置 PIN 长度与尺寸
大多数场景用 XML 就够了,但动态创建时可以用 Java/Kotlin 一步到位:
PinView pinView = findViewById(R.id.pinView); pinView.setItemCount(6); // 6 位验证码 pinView.setItemWidth(dp2px(52)); // 格子宽 52dp pinView.setItemRadius(dp2px(8)); // 圆角 8dp pinView.setAnimationEnable(true); // 开启输入动画输入动画与光标控制
调用setAnimationEnable(true)后,每输入一位数字都会触发一个约 150ms 的缩放淡入动画(内部通过ValueAnimator实现,见 PinView.java 的setupAnimator()),体验非常跟手。
密码明文与密文切换
与传统的setTransformationMethod()不同,PinView 提供了更直观的setPasswordHidden(boolean):true时以圆点显示,false时显示明文,非常适合做"眼睛"开关切换,示例见 SecondActivity.java。
常见问题与避坑提示
- 圆角不能超过半宽:
rectangle模式下itemRadius不能大于itemWidth的一半,line模式下不能超过lineWidth的一半,否则会抛出IllegalArgumentException(校验逻辑见 PinView.java 的checkItemRadius())。 itemSpacing="0dp"时的边框重叠:间距为 0 时库会自动做边框宽度补偿,避免相邻格子线条变粗,无需手动处理。- 建议使用官方样式:直接引用
@style/PinWidget.PinView(定义在 styles.xml),它已处理好背景透明、单行、隐藏系统光标等细节。
总结
PinView 是一款"小而美"的 Android PIN 输入组件库:属性数量不多但覆盖了尺寸、颜色、圆角、间距、光标、动画、背景全部定制点;方法命名直观,配合本文的速查表即可快速定位 API。如果你正在开发登录、支付或任何需要 OTP 验证码输入界面的 App,这份 PinView API 参考速查手册值得收藏备用。
【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
