Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键

本文主要是介绍Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:http://android.xsoftlab.net/training/keyboard-input/commands.html

当用户将焦点给到可编辑文本的View时,例如EditText这种,并且该设备还拥有实体键盘,那么所有的输入都会被系统处理。然而,如果你希望可以拦截或者直接处理键盘的输入事件的话,你可以通过实现回调方法KeyEvent.Callback接口来做到。比如onKeyDown()和onKeyMultiple()。

Activity与View都实现了KeyEvent.Callback接口,所以一般情况下应该重写这两个类的回调方法。

Note: 当通过KeyEvent类或其它相关API处理键盘的输入事件时,应当认为这些键盘事件都来自于实体键盘。绝不要仰仗接收软键盘的按键事件。

处理单个按键事件

如果要处理独立的按键事件,需要恰当的使用onKeyDown()方法或者onKeyUp()方法。通常情况下,如果要确保只有一个按键被按下时,应当只使用onKeyUp()方法。如果用户按下并没有放开某个按钮的话,那么onKeyDown()将会被调用多次。

举个例子,下面的实现通过响应某些按键来控制游戏:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_D:moveShip(MOVE_LEFT);return true;case KeyEvent.KEYCODE_F:moveShip(MOVE_RIGHT);return true;case KeyEvent.KEYCODE_J:fireMachineGun();return true;case KeyEvent.KEYCODE_K:fireMissile();return true;default:return super.onKeyUp(keyCode, event);}
}

处理组合按键

为了响应组合按键事件,比如某些按键需要与Shift或者Control组合使用,你可以查询通过回调方法传回的KeyEvent对象。一些方法还为组合按键的提供了查询信息的功能,比如getModifiers()和getMetaState()。。不管如何,最简单的方案就是通过isShiftPressed()或者isCtrlPressed()检查你所关心的组合按键是否被按下了。

举个例子,下面是onKeyUp()方法的改良版本,增添了一些专门对于Shift键的额外处理:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {switch (keyCode) {...case KeyEvent.KEYCODE_J:if (event.isShiftPressed()) {fireLaser();} else {fireMachineGun();}return true;case KeyEvent.KEYCODE_K:if (event.isShiftPressed()) {fireSeekingMissle();} else {fireMissile();}return true;default:return super.onKeyUp(keyCode, event);}
}

这篇关于Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是