密码输入框(默认六位 [*] [*] [*] [*] [*] [*])

2024-01-07 20:38
文章标签 密码 默认 输入框 六位

本文主要是介绍密码输入框(默认六位 [*] [*] [*] [*] [*] [*]),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**
* 密码输入框(默认六位 [] [] [] [] [] [])
*
* @author xiely.
* @date 17/07/19.
*/

public class PasswordEditText extends EditText {private Context mContext;/*** 密码框输入间隔*/private float mSpacingWidth;/*** 默认密码位数*/private int mMaxCharact = 6;private Bitmap mPwdImg, inputLeft, inputMiddle, inputRight, inputBox;private Paint mPaint = new Paint();public PasswordEditText(Context context) {this(context, null);}public PasswordEditText(Context context, AttributeSet attrs) {super(context, attrs);init(context);}private void init(Context context) {this.mContext = context;mSpacingWidth = DimenUtils.dpToPx(12);setBackgroundColor(Color.TRANSPARENT);setMaxCharacter(mMaxCharact);setSingleLine(true);setCursorVisible(false);setLongClickable(false);setInputType(InputType.TYPE_CLASS_NUMBER);mPwdImg = BitmapFactory.decodeResource(context.getResources(), R.drawable.ui_pw_is_set);inputLeft = BitmapFactory.decodeResource(context.getResources(), R.drawable.ui_input_left);inputMiddle = BitmapFactory.decodeResource(context.getResources(), R.drawable.ui_input_middle);inputRight = BitmapFactory.decodeResource(context.getResources(), R.drawable.ui_input_right);inputBox = BitmapFactory.decodeResource(context.getResources(), R.drawable.ui_input_box);}public void setSpacingWidth(float mSpacingLen) {this.mSpacingWidth = DimenUtils.dpToPx(mSpacingLen);}public void setMaxCharacter(int maxCharacter) {this.mMaxCharact = maxCharacter;setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxCharacter)});}@Overrideprotected void onDraw(Canvas canvas) {float disWidth = getWidth();float disHeight = getHeight();int spacingCount = mMaxCharact - 1;//间隔数n-1float pwdWidth = (disWidth - mSpacingWidth * spacingCount) / 6;//密码框的宽度int textLen = getText().toString().trim().length();float cacheWidth = 0;boolean isHaveSpace = false;if (mSpacingWidth > 0) {isHaveSpace = true;}for (int i = 0; i < mMaxCharact; i++) {//绘制密码方格RectF rectRim = new RectF(cacheWidth, 0, cacheWidth + pwdWidth, disHeight);mPaint.setColor(Color.parseColor("#d3e0e3"));if (isHaveSpace) {canvas.drawBitmap(inputBox, null, rectRim, mPaint);} else {if (i == 0) {canvas.drawBitmap(inputLeft, null, rectRim, mPaint);} else if (i == mMaxCharact - 1) {canvas.drawBitmap(inputRight, null, rectRim, mPaint);} else {canvas.drawBitmap(inputMiddle, null, rectRim, mPaint);}}if (i < textLen) {mPaint.reset();canvas.drawBitmap(mPwdImg, pwdWidth / 2 - mPwdImg.getWidth() / 2 + cacheWidth,disHeight / 2 - mPwdImg.getHeight() / 2, mPaint);}cacheWidth += (pwdWidth + mSpacingWidth);}}

有什么好的想法和交流意见欢迎留言。。。

这篇关于密码输入框(默认六位 [*] [*] [*] [*] [*] [*])的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581177

相关文章

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u