在手机上,我该怎么输入

ionic——限制输入框输入内容为手机号 前言   小编最近在做ionic项目的时候,在信息处理方面碰到了这么个事,手机号输入框需要验证手机号格式的及其正确性,但是官网提供的封装好的东西又不好使,于是,小编有了下面的解决办法 // HTML代码 <ion-item lines="none"> <ion-label><span style="color:red">*</span... 阅读详情

     前言1:在J2ME中,如果使用低级界面技术绘制输入框,那么用户的输入完全由程序来处理。这篇文章,详细的分析了怎么处理用户的输入。

     前言2:本方案中,没有涉及汉字的输入,如果要输入汉字,需要借助于第三方包,自己处理汉字输入,太花时间,单干不太现实。

     前言3:本方案可以输入数字,大写字母,小写字母,一些简单的符号。其中#切换输入状态(在数字,大写字母,小写字母之间切换),*输入符号(暂时只支持_/@*#,其他的读者可以自己添加)。

     在J2ME中,处理用户按键的入口方法是keyPressed,而标准的手机键盘,我们可以获取到0-9,*,#这些输入。依靠这两点,我们开始用户输入的设计。

第一步:把用户的按键转化为程序里面的常量,方便后面的处理(当然,这一步不是必须的,但是加上以后,逻辑更加清楚)

    

           private int pressKeyAction;//记录按键的临时变量
           // 键盘鼠标事件
           public boolean[] listKeys = new boolean[GameConst.KEY_COUNT];	//GameConst.KEY_COUNT是常量,数值为21,如果你使用本段代码,可以在这里直接写21,而且这个数值是后面程序会用到的。
           protected void keyPressed(int i) {
		super.keyPressed(i);
		pressKeyAction = getGameAction(i);

		if (-pressKeyAction >= GameConst.KEY_1) {//处理数字输入
			listKeys[-pressKeyAction] = true;
			return;
		}

		switch (pressKeyAction) {
		case GameCanvas.UP:
			listKeys[GameConst.KEY_UP] = true;
			break;
		case GameCanvas.DOWN:
			listKeys[GameConst.KEY_DOWN] = true;
			break;
		case GameCanvas.LEFT:
			listKeys[GameConst.KEY_LEFT] = true;
			break;
		case GameCanvas.RIGHT:
			listKeys[GameConst.KEY_RIGHT] = true;
			break;
		case GameCanvas.FIRE:
			listKeys[GameConst.KEY_FIRE] = true;
			break;
		case -1:
			listKeys[GameConst.KEY_LEFTSOFT] = true;
			break;
		case -2:
			listKeys[GameConst.KEY_RIGHTSOFT] = true;
			break;
		case -3:
			listKeys[GameConst.KEY_SHORTCUT] = true;
			break;
		case -4:
			listKeys[GameConst.KEY_ZERO] = true;
			break;
		case -5:
			listKeys[GameConst.KEY_STAR] = true;
			break;
		case -6:
			listKeys[GameConst.KEY_POUND] = true;
			break;
		}
	}


通过这一步,我们就把用户输入信息存放在了一个boolean数组之中,如果用户输入1,那么数组中保存1的那一位,就是true。

这里补充一下程序中可能用到的数字,当然,我是写在GameConst中,以常量的方式处理:

	// @Key List
	int KEY_COUNT = 21;
	int KEY_UP = 0;
	int KEY_DOWN = 1;
	int KEY_LEFT = 2;
	int KEY_RIGHT = 3;
	int KEY_FIRE = 4;
	int KEY_LEFTSOFT = 5;
	int KEY_RIGHTSOFT = 6;
	int KEY_SHORTCUT = 7;
	int KEY_ZERO = 8;
	int KEY_STAR = 9;
	int KEY_POUND = 10;
	int KEY_1 = 11;
	int KEY_2 = 12;
	int KEY_3 = 13;
	int KEY_4 = 14;
	int KEY_5 = 15;
	int KEY_6 = 16;
	int KEY_7 = 17;
	int KEY_8 = 18;
	int KEY_9 = 19;
	int KEY_DEL = 20;


下面,我们就可以根据不同的输入,做不同的处理了:

   

	public void onKeyPressed(boolean[] listKeys) {
		if (listKeys[GameConst.KEY_1]) {
			onKeyPressedDone(0);
		} else if (listKeys[GameConst.KEY_2]) {
			onKeyPressedDone(1);
		} else if (listKeys[GameConst.KEY_3]) {
			onKeyPressedDone(2);
		} else if (listKeys[GameConst.KEY_4]) {
			onKeyPressedDone(3);
		} else if (listKeys[GameConst.KEY_5]) {
			onKeyPressedDone(4);
		} else if (listKeys[GameConst.KEY_6]) {
			onKeyPressedDone(5);
		} else if (listKeys[GameConst.KEY_7]) {
			onKeyPressedDone(6);
		} else if (listKeys[GameConst.KEY_8]) {
			onKeyPressedDone(7);
		} else if (listKeys[GameConst.KEY_9]) {
			onKeyPressedDone(8);
		} else if (listKeys[GameConst.KEY_ZERO]) {
			onKeyPressedDone(10);
		} else if (listKeys[GameConst.KEY_STAR]) {
			if (key_type == 0 || key_type == 1) {
			} else {
				onKeyPressedDone(9);
			}
		} else if (listKeys[GameConst.KEY_POUND]) {
			key_type = (key_type + 1) % 3;
			onKeyPressedDone(-10);// 这里是重置键盘状态
		} else if (listKeys[GameConst.KEY_DOWN]) {
			//这个地方,根据自己的业务逻辑处理,对应的按键是向下键
		} else if (listKeys[GameConst.KEY_UP]) {
			//这个地方,根据自己的业务逻辑处理,对应的按键是向上键
		} else if (listKeys[GameConst.KEY_LEFT]) {
			//这个地方,根据自己的业务逻辑处理,对应的按键是向左键
		} else if (listKeys[GameConst.KEY_RIGHTSOFT]) {
			//这个地方,根据自己的业务逻辑处理,对应的按键是右软键
		} //当然,这后面还可以处理向右键等,自己添加
	}


上段代码中用到了一些变量,这里补充说明:

private int key_type = 0;//记录输入类型,有三类:数字,大写字母,小写字母


最后就是比较复杂的onKeyPressedDone了,它真正的处理了按键的逻辑:

 

	private String[] alphas0 = { "_/@*#", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", "切换", "0", "退格" };

	private String[] alphas1 = { "_/@*#", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ", "切换", "0", "退格" };

	private String[] alphas2 = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "0", "#" };
	/**
	 * 上一次点击的按钮
	 */
	private int old_digit = -1;
	/**
	 * 当前按钮被点击的次数
	 */
	private int single_digit = 0;
	
	private long inputTime = 0L;
	
	private int inputWait = 700;

	private void onKeyPressedDone(int digit) {
		if (digit == -10) {//这里重置状态
			inputTime = System.currentTimeMillis();
			old_digit = digit;
			return;
		}
		switch (key_type) {
		case 0: {// 小写字母
			if (old_digit == digit) {//两次输入一样,意思就是对一个键连续点击了两次
				if (System.currentTimeMillis() - inputTime <= inputWait) {//连续两次的输入时间小于等待时间,认为是想输入同一个位置上的下一个字母
					if (digit == 0 || digit == 6 || digit == 8) {
						single_digit = (single_digit + 1) % 4;
					} else {
						single_digit = (single_digit + 1) % 3;
					}
				} else {//连续两次的输入时间大于等待时间,认为是想输入同一个位置字母两次
					single_digit = 0;
				}
			} else {//连续两次的输入不同
				single_digit = 0;
			}
			System.out.println(alphas0[digit].charAt(single_digit));//输出的内容,是你想要的
			break;
		}

		case 1: {// 大写字母
			if (old_digit == digit) {
				if (System.currentTimeMillis() - inputTime < inputWait) {
					if (digit == 0 || digit == 6 || digit == 8) {
						single_digit = (single_digit + 1) % 4;
					} else {
						single_digit = (single_digit + 1) % 3;
					}
				} else {
					single_digit = 0;
				}
			} else {
				single_digit = 0;
			}
			System.out.println(alphas1[digit].charAt(single_digit));//输出的内容,是你想要的
			break;
		}
		case 2: {// 数字
			System.out.println(alphas2[digit]);//输出的内容,是你想要的
			break;
		}
		
		default:
			break;
		}
		inputTime = System.currentTimeMillis();//在输入处理结束以后,重置inputTime
		old_digit = digit;//在输入处理结束以后,重置old_digit
	}


 

kmeans聚类分析结果怎么看_【Stata与机器学习】物以类聚-KMeans算法应用案例介绍... 古语有云:物以类聚,人以群分。KMeans是无监督机器学习中的聚类算法中最简单的一种——基于特征对样本进行归为不同的类,很好地阐述了‘物以类聚’这句话的精髓。机器学习又叫统计学习。既然都统计了,所以当然包括了计量经济学。所以一般来说,机器学习的算法类型远多于计量经济学。比如线性回归,这个算是机器学习算法中比较基础的部分。当然,计量经济学在回归分析、因果推断方面的造诣,也是普通机器学算法所不能比的。... 阅读详情

相关推荐

vivado安装空间与依赖要求:入门须知要点

准备安装Vivado时,需重点关注系统空间和依赖环境的配置。结合vivado安装教程,详细说明最低磁盘要求、内存配置及操作系统兼容性,帮助新手快速搭建开发环境,避免常见安装失败问题。

weixin_34725745的博客 1572

俄文输入法_如何在手机上添加俄语输入法

强烈推荐俄语的搜狗键盘输入法。使用方法如下:1.下载搜狗输入法。2.单击工具栏上的“ s”图标。3.单击设置-语言-添加俄语。因此您可以使用它,并且可以将键盘更改为各种外观〜强烈建议使用搜狗输入法的俄语键盘。使用方法如下:1.下载搜狗输入法。2.单击工具栏上的“ s”图标。3.单击设置-语言-添加俄语。因此您可以使用它,并且可以将键盘更改为各种外观〜我今天也在寻找俄语输入法,但我还没有找到,但是我...

weixin_42470145的博客 1万+

Quartz定时任务调度框架中的Misfire策略实战解析

本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。

weixin_29250573的博客 76

手机输入法盘点

尽管SoundCloud CEO Alexander Ljung称:“语音是比视频更大的市场。语音将成为新的输入法。”但是就目前来看,传统的手机输入法还大有用武之地。事实上,输入法大战正如火如荼,各种产品层出不穷,而互联网巨头们也都纷纷基于自身的优势推出了各自的输入法。小编对当下主流的几款输入法简单做个盘点,到底哪个输入法更给力?最有发言权的人是你!   搜狗手机输入法   亮点:词库是亮

雷锋网 1349

PICO G2 4K Unity开发环境配置完全指南

VR开发中,Android平台的硬件适配与Unity版本兼容性是基础性技术命题。PICO G2 4K作为基于骁龙845+Android 8.1的专用VR一体机,其开发链路高度依赖特定Unity LTS版本(2020.3.41f1)、NDK r21e及OpenJDK 11等工具链组合,本质是嵌入式Android VR Runtime与Unity IL2CPP ABI的深度对齐问题。该配置方案不仅解决ADB识别、APK签名、Logcat捕获等工程痛点,更支撑手柄6DoF追踪、射线交互、Haptic反馈等核心XR

weixin_30298497的博客 616

华为OD机试 - 小扇和小船的数字游戏 - 二进制(Python/JS/C/C++ 2024 C卷 200分)

二进制表示:任何数 n 的二进制表示中,要找到下一个有相同数量的1的数,我们需要在最低位的0后面的最低位的1进行操作。右侧交换法则:找到右侧的第一个0,位于第一个1的左边,将这个0变成1(提升这个位),并将这个1变成0(下移这个位)。调整尾部1:为了得到最小的数,将所有低于已交换的1的位重置,使得所有1尽可能靠右。

学Java,找哪吒 1161

手机输入法中有一个重复输入上一次的功能

手机输入法中有一个重复输入上一次的功能。 有时输入时也经常会用到重复的东西,所以这个还是可以考虑的。

chruan的专栏 3733

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2559

部分安卓手机点击输入框,输入法会将输入框遮住问题

在写移动端页面时候在乐视手机测试时,点击输入框,输入框无法自动调整到可视区域,并且输入法挡住了输入框,在其他苹果和安卓手机上测试是可以自动移动到可视区域的上网找了一些方法: 1、scrollIntoView(true | false) 滚动浏览器窗口或容器元素,以便在当前视窗的可见范围看见当前元素。如果为true,或者省略它,窗口会尽可能滚动到自身顶部与元素顶部平齐。目前各浏览器均支持2、scr

Jsoning的博客 7907

量子化学仿真软件:VASP_(9).磁性材料计算

在量子化学仿真软件 VASP 中,磁性材料的计算是一个复杂但重要的过程。通过正确设置磁性状态、分析磁性性质、优化计算参数以及研究磁性相变和磁动力学,可以更准确地描述和预测磁性材料的性能。希望本节的内容能够为研究磁性材料的科研人员提供有用的参考和指导。

kkchenjj的博客 1375

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2050

输入框输入手机号自动显示空格

输入框输入手机号自动显示空格,这个很好处理直接看输入字符串的长度 template <input type="text" placeholder="用户名" v-model="username" @keydown="keyDown">{{username}} <input type="password" placeholder="密码" v-model="pa...

weixin_30314793的博客 667

帆软报表开发-快速入门

数据可视化展示功能特点如下:选择权限管理 > 用户最终权限 > 汤姆(Tom) > 选择图表设计入门 > 打开查看权限。

郭宝的博客 5968

你可能没听过的手机输入法技巧

其实手机输入法真的很强

PeterJXL的博客 4295

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

连续输入_手机上怎么快速连续输入音标?只要三步!

微友提问请问凌哥,我看到别人给您留言的时候,有时候会使用音标。是您帮助老师们修改的,还是她们直接用手机打出来的呢?怎么用手机快速打出音标来呀?打不出音标,我都不敢向您提问啦!谢谢!您好!太简单啦!您只需要在手机上安装一款输入法,就能行云流水、天马行空地输入音标符号了!而且是新版的音标符号!一、二、三,跟我走!【第1步】安装讯飞语音输入法,看到下图中左上角的圆圈中的“讯飞”了吗?单击左下...

weixin_31951989的博客 3502

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

输入法android版,享受流畅手机输入 百度手机输入法Android版试用

日前,百度手机输入法针对Android平台发布了最新版本,凭借其拥有独家专利的多样输入、点划结合等创新技术,在Android用户中掀起了一场输入体验革命。到底这一输入法有何过人之处?笔者第一时间进行了试用。软件名称:百度手机输入法Android版软件性质:免费软件超大词库:大幅提升输入效率对于全球最大的中文搜索引擎百度来说,其每天都要接受网民数亿次查询请求,可随时更新网络上最新最热的词汇,并将词汇...

weixin_28340315的博客 462

手机号输入框的优化

在前端开发中,我们经常会遇到用户输入手机号的情况,比如手机号注册、登录,收集用户的手机号信息等。如果我们要想把用户体验做到极致,至少要包含以下两条需求: 1. 输入框只能输入数字 2. 输入框最多只能输入11个字符 通常情况下,开发人员的解决方法就是把input标签的type属性设置为number,这样就限制了输入框只能输入数字类型的字符了,然后添加maxlength="11",限制输入框最...

kingzhsh的博客 2846

js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题

之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。前提1.弹出的对话框用display:fixed定位的2.对话框大小固定解决办法css部分(dlg-top与dlg-bottom为对话框的类,用于确定对话框的定位方式).dlg-top{position: fixed;top:100px;left:10%;}.dlg-bottom{pos...

weixin_35987446的博客 1050

限定手机号输入

限定手机号输入手机号:

2301_77551298的博客 305

html手机号输入框,手机号输入框自动格式化为344

写在前面相信大家已经看过某些手机号的输入框在输入的时候,手机号是3 4 4格式,即 输入一个手机号时,会隔成 159 8888 3333 这样的输入框。笔者也实现了一个这样的组件,这个组件的特点是: 组件表现上在输入时会自动隔断成 3 4 4 格式,且只能输入数字实现原理基础分析一开始看到这个需求,我一看,输入的时候劫持一下onChange,格式化一下就好了嘛,啪的一下,很快啊,代码就写好了。上来...

weixin_32267731的博客 3010

「前端」React中限制输入框仅输入数字或手机号

很久没有写博客了,最近在自己做项目的过程中遇到了一些坑,踩完之后怕自己忘了,写下来记录一下。 在React中,我们在修改输入框的内容是会调用到onChange函数,然后通过onChange函数实现修改state的功能,在这个过程中如何实现对输入内容的限制呢? 例如在登录的时候,对手机号和验证码的输入做限制: 解决办法1: 直接使用antd中的Form组件,使用getFieldDecorator方...

Jack's Blog 1万+

表单验证 手机号输入框

最近有点时间抠了一些细节, 之前项目的表单验证比较奔放, 比如H5手机号输入框,可以输入文字, 移动端点击弹出来的键盘不是数字键盘, 今天找了点时间优化一下 先上最终效果 这里主要是做了两点 1、 input 的pattern 属性配合样式进行同步提示, 在此处表现就是输入错误的时候输入框为红色, 正确的时候为绿色 2、还有就是直接限制不能输入字符,这一点可能途中提现不出来 优化...

Huang_wf 6440

远程控制手机时,怎样用电脑键盘给手机输入文本?

两款软件启动键盘输入功能的操作是一样的,而且都需要手机重启才能激活这项功能,所以建议大家首次使用软件就顺便激活键盘功能,免得真要远距离使用时,无法操作。

AirDroid_cn的博客 2721

如何快速输入手机号

有时手机号码是单位统一购买 的,号码的前7位是一样的。那么如何利 用这个情况,快速输入整个手机号码呢? 在Excel的任意一个单元格中输入手机 号码的相同部分,比如1351234。然后右击 该单元格并选择“设置单元格格式”, 在弹出的窗口中切换到“数字”选项卡中 则的“自定义”,在右侧窗格的“类型”一栏 按中输入“13512340000”。以后只需在单元格中输入手机号码的后4位,就可以快速输入整个手机号码了。

weixin_73710869的博客 2817

苹果手机怎么手写输入?看这里,新手教学

在日常使用中,有时候我们可能更倾向于使用手写输入来输入文字,这种方式不仅更加直观,而且更符合我们的习惯。苹果手机怎么手写输入?在本文中,我们将介绍如何在苹果手机上启用和使用手写输入功能。

shujuwa123的博客 1758

el-input输入11位手机号,边输入边验证手机号码格式

喉咙痛…不多说,直接上码 den…gdeng…不对,喉咙痛和打字什么关系… 哎…反正多写也无益,少写也许喉咙就好了呢… <template> <el-form :rules="rules" :model="data"> <el-form-column prop="phone"> <el-input @input="phoneChange" v-...

weixin_38779534的博客 6265

Android登录界面实现手机号输入和密码输入效果

每个应用登录界面是必不可少的界面。其中,要实现手机号输入的分开显示的效果,还要实现输入验证码输入块的效果。需要添加 jitpack的依赖。

技术的积累,其实就是财富的积累呀。 2010
上一篇: 进制转换
下一篇: 移动开发的那些痛
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值