Android 自定义密码键盘组件,支持多点触控

Android自定义键盘开发指南:从KeyboardView到实战优化 在Android应用开发中,输入法键盘是用户与设备交互的核心组件之一。其工作原理是通过系统提供的软键盘服务,将用户触摸事件转化为文本输入。自定义键盘的技术价值在于能够突破系统默认键盘的通用性限制,针对特定业务场景进行深度优化,从而显著提升输入效率和用户体验。在金融交易、游戏内聊天、密码输入等垂直领域,定制化的键盘布局和功能集成已成为专业应用的标配。通过掌握Android SDK中的KeyboardView与Keyboard类,开发者可以快速构建应用内专属键盘,实现从XML布局定义到按键事件处理的完整流程。本 阅读详情

前言

现在对于前端APP的安全要求越来越高,所以很多APP都开发了自己的数字键盘,这么做对于安全性的提升个人总结有如下几点:

  1. 防止第三方键盘出现BUG,泄露用户支付密码。
  2. 自定义键盘可以根据自己的算法提高加密等级,比如的密码是123456,但是我可以在内存中存储为xxxxxx。
  3. Android 系统黑客只能获取点击屏幕位置,并不能直接获得该按钮的具体值。
  4. 可以自定义按键的点击效果,防止录屏获取支付密码。(用户体验不好)
  5. 可以每次点击更改按键位置,防止屏幕位置点击对比获取支付密码。(用户体验不好)

个人认为,如果不是安全要求很高的系统,满足上述前3点即可,毕竟用户体验也是很重要的。不过最好还是要根据实际具体情况分析。

密码键盘DEMO

Github地址:https://github.com/AdolphL/PayKeyboard

密码键盘DEMO解析

自定义键盘的技术点在于Canvas画图和点击事件的编写

画图

这个我就不多讲了,多看看API就可以了。键盘绘画主要逻辑在onDraw方法下,主要就是算每个按键的范围和按键不同状态的背景色不同体现点击效果,整体的刷新函数使用的是invalidate()并没有使用局部刷新,原因是使用invalidate(xx)好像在高版本Android设备上没有效果也就没有尝试了,感兴趣的同学可以了解下。

点击事件

其实一个点击事件分解开来就是触点Down - xxx - Up(当然Up时候的区域要和Down时候的区域一致,不能中间状态已经出了此按键区域还触发OnClick时间了),这里可能还有个时间问题,过短就不触发,过长触发长按事件等等,此数字键盘的点击事件我是没有计算时间的,因为感觉意义不大。 

点击事件的主要代码在onTouch()方法下面,这里需要注意的是ACTION_DOWN事件必须返回true,系统才会把后续的Move和UP事件等继续交由此View处理, ACTION_POINTER_DOWN 和 ACTION_POINTER_UP 是支持多点触控的事件,我们可以使用event.getPointerId(event.getActionIndex()) 方法来获取是第几个触点出发的Down或者Up事件,当然Move事件也是支持多点的,但是在我的测试中好像只有第一个点响应了Up事件后才会触发第二个触点的Move事件。

关于点击具体按键的区域判定,因为键盘上的按键都是我们自己画出来的,不是独立组件我们需要判定此次点击具体点击了哪个按键。clickable数组变量里面存放了每一个可点击按键的具体坐标。当触发onDown方法时会根据触点的坐标来求出此次触发了哪个按键或者是否触发按键。

关于当前屏幕触点的状态全部存放在clickType变量中,因为我们要记录下触点Down时候的状态,在Up的时候才能判断是否触发Click事件。

安全

这里可以注入一个Encryption接口,此接口复杂密码的加密(密码都是每一个字符加密的),具体加密算法由实现类实现。

密码键盘DEMO扩展

目前这个组件就是个小Demo,但是也可以做出很多的效果,比如结合popup做一个弹出键盘,或者结合透明的Activity让其它的应用直接唤醒你的支付键盘等。有兴趣的同学可以尝试下~

Unity移动端InputField自动唤出软键盘:EventTrigger与TouchScreenKeyboard深度集成方案 在Unity移动应用开发中,UI交互的流畅性直接影响用户体验,尤其是表单输入场景。其核心原理在于对UGUI事件系统的深度理解和定制,通过监听用户交互事件来触发系统功能。EventTrigger组件作为UGUI事件系统的关键扩展点,提供了非侵入式的事件监听能力,是实现精准交互响应的技术基础。结合TouchScreenKeyboard这一跨平台系统键盘接口,开发者可以构建稳定、高效的输入解决方案。该方案的技术价值在于显著提升应用的响应速度和操作连贯性,避免了默认行为的平台差异和手动点击的割裂感。在登录注册、聊天 阅读详情

相关推荐

Android自定义输入密码框和键盘

Android自定义密码输入框和键盘,效果类似支付宝和淘宝的密码输入框和键盘效果

Android安全输入设计与思考

我不会顾忌别人怎么看,或者顾忌到放弃什么东西。我喜欢两句诗“天生我才必有用,千金散尽还复来”。当年离开方正,也是这样仰天大笑出门去…… ——周鸿祎  随着移动支付的快速普及,如何保障用户信息安全这个问题变得越来越重要。 本文对市面上的Android安全键盘进行了总结,详细分析了为什么采用安全键盘,怎么样实现安全键盘等问题。以及各个产品线使用的安全键盘有何优劣点。以方便开发者对自我开发安全项

北漂周的专栏(微信:stchou_zst) 1万+

android自定义密码键盘

android上的密码键盘,数字随机

android 自定义键盘的安全性,自定义安全键盘——仿民生银行

系统自带键盘和第三方的键盘不管是从性能还是从体验上来说都要胜于我们自己写的,但我们为什么还要去自定义键盘呢?其实就为了安全性,比如用户在输入账户密码,支付密码的时候,防止键盘获取到我们的数据;或者说美工要求Android的键盘需要和IOS的一样,那我们就得自己去写个键盘了。效果图:keyboardView.gif一:键盘布局XML布局属性Keyboard.Key的属性.pngKeyboardVie...

weixin_42640676的博客 977

使用Termux在Android设备上编译运行SpecCPU2006

SPEC2006搭配Termux,竟然还能这么玩?!

菜菜的菜园子 2960

嵌入式开源项目哪里找

对比产生的伤害是经验思考积累下的差距,知道自己不知道什么然后前进去追寻。

quanquanxiaobu的博客 3941

前端Vue自定义支付密码输入框键盘与设置弹框组件的设计与实现

通过组件化开发,我们成功实现了前端Vue自定义支付密码输入框键盘和支付密码设置弹框组件。同时,组件化开发的思想也为我们提供了一种灵活、可扩展的开发方式,使得前端应用更加健壮和可维护。本文将介绍两个重要的组件:自定义支付密码输入框键盘(Keyboard)和支付密码设置弹框(Dialog)组件。这两个组件的设计和实现,将展示组件化开发在前端框架Vue中的实际应用。弹框显示时,用户可以进行密码输入和确认操作,同时弹框提供了必要的提示信息和操作按钮,以引导用户完成密码设置流程。该组件的设计遵循简洁、易用的原则。

chenchuang0128的博客 1167

INS/伪距组合导航(1)

星间单差GNSS/INS伪距紧组合

u014430081的博客 874

APICloud AVM框架 密码输入框组件

带网格的输入框组件,可以用于输入密码、短信验证码等场景,通常与数字键盘组件配合使用。支持自定义密码长度,支持加密和明文显示。

白鱼赤乌的博客 466

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 184

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1098

android 加密软键盘,Android软键盘隐藏及显示

一、页面初始化隐藏:Manifest中增加:android:windowSoftInputMode="adjustPan|stateHidden"/>二、强制隐藏:(view为接受软键盘输入的视图,SHOW_FORCED表示强制显示)InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_MET...

weixin_29211309的博客 492

利用Python脚本生成IDA Pro许可证文件idapro.hexlic的完整指南

本文提供了一份详细的Python脚本指南,用于自动化生成IDA Pro的许可证文件idapro.hexlic。文章深入解析了脚本原理,包括构建许可证JSON、RSA密钥修补与签名生成机制,并附有完整的操作流程与常见问题排查,帮助逆向工程人员快速完成本地化许可部署。

weixin_29313547的博客 612

Scrcpy Mask:安卓投屏隐私保护与键盘映射的终极解决方案

你是否曾经在会议投屏时担心手机通知突然弹出泄露隐私?或者在电脑上玩手游时觉得触屏操作不够流畅?Scrcpy Mask正是为了解决这些痛点而生的开源安卓投屏隐私保护工具,通过创新的隐私区域屏蔽和专业的键盘映射系统,让你完全掌控投屏内容的安全边界和操作体验。 ## 为什么你需要Scrcpy Mask? ### 传统投屏的三大痛点 1. **隐私全暴露** - 投屏时所有通知、消息、个人数据一览无余

gitblog_00065的博客 71

Python爬虫实战:抓取CVE安全漏洞数据库

在网络安全领域,CVE(Common Vulnerabilities and Exposures)是一个非常重要的安全漏洞字典,它为每个安全漏洞提供了唯一的标识符。安全研究人员、开发人员和系统管理员都需要及时了解最新的CVE信息,以便采取相应的防护措施。本文将详细介绍如何使用Python爬虫技术从专业CVE网站抓取漏洞数据,并构建一个完整的CVE信息采集系统。本文详细介绍了如何使用Python爬虫技术从专业CVE网站抓取安全漏洞数据。多种爬虫技术反爬虫策略:User-Agent轮换、代理IP、请求延迟。

2201_76125261的博客 367

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

Robot_PLC_HMI_Automation 3575

安卓投屏的隐私守护神:Scrcpy Mask如何重塑你的屏幕共享体验

你是否曾在会议投屏时,担心手机通知突然弹出暴露隐私?或者想在电脑上畅玩手游,却受限于触屏操作的局限性?Scrcpy Mask正是为这些痛点而生的安卓投屏隐私保护工具,它将专业级的按键映射系统与智能隐私保护机制完美结合,让你在享受大屏便利的同时,牢牢掌控隐私边界。 ## 🎮 当游戏手柄遇见安卓投屏 想象一下这样的场景:你正用电脑玩手游,键盘上的WASD键控制角色移动,鼠标精准瞄准目标,空格键释

gitblog_00008的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Anlink中文版(免费安卓投屏软件)官方正式版V3.0 | 优秀的电脑控制手机软件 | anlink官网下载

Anlink中文版是一款基于Scrcpy二次开发的全新轻量级免费安卓投屏软件,也叫多屏协同工具,也是一款简单易用的用Windows控制Android设备的软件,主要作用是将智能手机的显示镜像到计算机,大大简化工作内容提高工作效率,Anlink支持USB与Wi-Fi无线连接,无需在手机上安装App即可轻松实现跨平台互通,支持多点触控(电脑显示器需支持触摸屏功能)、键盘打字,仅需要打开USB调试模式即可正常使用, Anlink中文版兼容谷歌、HTC、华为、联想、小米、OnePl...

chaorenqiang的博客 9361

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android手机控制win7,向日葵远程控制:让Android手机玩转WIN7系统

天下神奇事无奇不有,在Android手机上居然能够运行WIN7系统。近日,在网上就找到了这样一段视频:I900上运行win7系统。若不仔细看还真以为是手机可以安装win7呢,原来是借助了向日葵远程桌面技术。其实操作也非常简单,只需在手机上安装向日葵Android版主控端的APK(APK下载地址:http://www.oray.com/sunlogin/download_cclientandroid...

weixin_30733115的博客 821

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

终极方案:用Android手机变身专业USB键盘鼠标的完整指南

你是否曾经遇到过这样的场景:需要调试一台没有键盘的电脑,或者在BIOS/UEFI界面无法使用常规输入设备?现在,借助**USB HID Client**这个开源Android应用,你的手机可以瞬间变身为专业的**USB键盘鼠标模拟器**,无需在目标设备上安装任何软件。🔧 这个**Android HID设备模拟**应用通过底层USB HID协议实现,让你的手机能够被识别为标准键盘和鼠标,甚至在系

gitblog_01137的博客 607

手势、键盘与游戏控制器:Android官方培训课程中文版用户输入处理全指南

Android 用户输入处理是让应用"会听话"的关键技能。这份《手势、键盘与游戏控制器》指南来自 **Android 官方培训课程中文版**,带你一次学会三类核心输入:👆 触摸手势、⌨️ 键盘输入和 🎮 游戏控制器,帮助新手快速构建交互体验出色的应用。 ## 📋 课程概览:三大输入体系 本培训课程的输入处理部分位于 [input/](https://link.gitcode.com/i/

gitblog_00922的博客 71

USB HID Client:Android设备实现免驱动键盘鼠标输入的技术解决方案

USB HID Client是一款基于Android平台的系统级输入设备模拟工具,通过底层USB HID协议实现手机向电脑、智能电视、服务器等设备提供标准键盘鼠标输入功能。该应用无需在目标设备安装任何驱动程序或软件,支持从Android 8.0(API 26)及以上版本,最新版本为v3.0.1。其核心价值在于将智能手机转变为通用的输入外设,解决多场景下的临时或应急输入需求。 [![USB HID

gitblog_00308的博客 253

ScrcpyOverWebRTC:基于WebRTC的浏览器端安卓远程控制方案

ScrcpyOverWebRTC(项目作者:hqw700)是一个基于WebRTC和Scrcpy的高性能、低延迟云手机解决方案。它采用Fat Agent(直连模式)架构,结合硬件级PTS透传技术,实现了媲美原生Scrcpy的流畅体验。无需客户端:用户只需要一个现代浏览器,就能连接和控制安卓设备跨终端支持:iOS、Android、Windows、Mac、Linux全平台覆盖公网访问:原生支持IPv6直连,可以随时随地远程访问。

chsyts的博客 296

手机变身万能键盘鼠标:无需安装软件的跨设备输入方案

还在为找不到键盘而烦恼吗?想在智能电视上输入复杂密码,或者需要临时控制一台没有输入设备的电脑?USB HID Client 这款 Android 应用让你轻松将手机变成真正的键盘和鼠标,而且**完全不需要在目标设备上安装任何软件**!无论你面对的是电脑、智能电视、游戏机还是服务器,只需一根 USB 数据线,你的手机就能成为万能输入工具。 ## 为什么选择 USB HID Client? 在众多

gitblog_00551的博客 182

Android VNC服务器架构深度解析:droidVncServer技术实现与高级配置指南

droidVncServer作为Android平台上功能最完整的开源VNC服务器解决方案,为开发者提供了强大的远程控制能力。该项目基于LibVNCServer库构建,支持多种屏幕捕获技术和输入处理机制,实现了Android设备的完整远程访问能力。本文将深入分析其架构设计原理、性能调优策略和安全加固方案。 ## 技术架构深度分析 ### 多层级屏幕捕获架构 droidVncServer实现了四

gitblog_00769的博客 1082

Android 系统发展史

Android 系统发展历史 - 介绍重要版本 - 重要的更新

因为热爱,所以坚持。 1792
上一篇: Centos7.2 SSH免密登录设置
下一篇: Android自定义View链接系统输入法(自定义验证码组件)
hellopeng1
博客等级 码龄10年 66粉丝 20原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值