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

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

相关文章

禁止平板,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位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

Linux下读取默认MAC地址

一、适用范围 这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287A开发套件,其应用原理及配套示例也适用于下表1.1所列出的产品型号。 二、原理介绍 MAC(Media Access Control,介质访问控制)是用来定义网络设备的位置。用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给

在Webmin上默认状态无法正常显示 Mariadb V11.02及以上版本

OS: Armbian OS 24.5.0 Bookworm Mariadb V11.02及以上版本 Webmin:V2.202 小众问题,主要是记录一下。 如题 Webmin 默认无法 Mariadb V11.02及以上版本 如果对 /etc/webmin/mysql/config 文件作相应调整就可以再现Mariadb管理界面。 路径+文件:/etc/webmin/mysql/config