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

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

相关文章

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

android系统源码12 修改默认桌面壁纸--SRO方式

1、aosp12修改默认桌面壁纸 代码路径 :frameworks\base\core\res\res\drawable-nodpi 替换成自己的图片即可,不过需要覆盖所有目录下的图片。 由于是静态修改,则需要make一下,重新编译。 2、方法二Overlay方式 由于上述方法有很大缺点,修改多了之后容易遗忘自己修改哪些文件,为此我们采用另外一种方法,使用Overlay方式。

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测