一款简洁可自定义样式密码框输入组件GridPasswordView
来源:互联网 发布:淘宝网儿童冬天裤子男 编辑:程序博客网 时间:2024/06/06 18:44
通过继承TextView自定义实现的一款密码输入组件GridPasswordView,先上效果图:
动态效果图:
这里我根据自己经验做了样式定义与适配适配:
- 对于一些需求要求每个密码框式正方形也做了适配
- 支持定义密码框长度,密码可以明文或者密码显示
- 根据android的inputType类型来确认
- 增加闪动光标,可自定义样式
只需要在xml中定义显示样式就可以:
<com.ttarfall.gridpassword.UCSGridPasswordView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:cursorVisible="true" android:inputType="numberPassword" android:padding="8dp" android:textSize="18sp" app:gpCursorDrawable="@drawable/my_cursor" app:gpLineColor="@color/primary" app:gpLineHeight="40dp" app:gpLineWidth="2dp" app:gpPasswordLength="6" />
这里本着开源的精神对源码关键点进行解析:
在onMeasure测量方法中测试计算GridPasswordView视图宽高
calLineLayout(int width, int height, int lineWidth)
该方法计算密码框的宽度和高度,以及偏移量
这里其实做了一些处理:由于我是根据定义的密码框高度配合View的宽度来计算密码框X方向 mXLineHeight 的高度,如果配置mXLineHeightFull=true 是充满View,那么我就计算X方向的高度平分View,或者密码框的总宽度超过也是重新计算平分水平方向,此时保证密码框完整显示
计算完相关参数就是在onDraw方法中绘制密码框
唯一需要说的就是光标闪动绘制,这里采用的是局部刷新View的方法,指定刷新光标区域:
if (mCursorBitmapDrawable != null) { mCursorBitmapDrawable.setAlpha(mInvalidateCursorVisible ? 255 : 0); if (mCursorRect != null) { invalidate(mCursorRect.left, mCursorRect.top, mCursorRect.right, mCursorRect.bottom); } else { invalidate(); } } }
最后附上GitHub下载地址:https://github.com/ttarfall/GridPasswordView
欢迎大家体验使用,如有建议可留言
阅读全文
0 0
- 一款简洁可自定义样式密码框输入组件GridPasswordView
- GridPasswordView 密码输入框
- GridPasswordView 密码输入框
- GridPasswordView 类似支付宝支付密码输入框
- 仿微信/支付宝的密码输入框效果:GridPasswordView
- 简洁输入框样式
- wpf 自定义密码样式输入框
- 仿支付宝/微信的密码输入框效果GridPasswordView解析
- [Android UI开发] 仿微信/支付宝的密码输入框效果:GridPasswordView
- 自定义横线样式的密码输入控件
- 一款漂亮的表单输入框样式
- 支付密码控件GridPasswordView
- 自定义密码输入框
- 自定义密码输入框
- ios一个简单的自定义密码输入框,alert样式和sheet样式
- jquery封装了一个简洁轻巧的可拖动可自定义样式的纯div+css带遮罩层的仿模态弹出框
- 自定义密码输入框,无圆角
- Android自定义密码输入框
- 测试
- 2017.9.14模拟考试
- Excel2010去除图片背景快速从图片中获得有用的内容
- MySQL Replication需要注意的问题
- Linux-3.10-x86_64 内核配置选项简介
- 一款简洁可自定义样式密码框输入组件GridPasswordView
- 项目初期准备
- Window平台Git-Bash的主题配置
- Google系 900个实用图标的Axure元件库助你原型无忧
- 打印机状态码解析
- SSM下添加javamelody监控。以及遇到的部分问题的解决
- resin安全配置 只允许指定ip访问resin-admin 拒绝某些ip访问webapp
- c语言char类型的相关知识点
- 【科大讯飞2017年笔试题】课程冲突