原文地址: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系列课程中文版:键盘输入处理之处理键盘按键相关推荐

  1. Android官方开发文档Training系列课程中文版:调用相机之控制相机

    原文地址:http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课,我们会讨论如何使用Android框架API来直接控制相机 ...

  2. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  3. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  4. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  5. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  6. Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式

    原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html 当输入的焦点进入或者离开文本框时,Android会适时 ...

  7. Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试

    原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html 功能性测试包括模 ...

  8. Android官方开发文档Training系列课程中文版:键盘输入处理之指定输入的类型

    原文地址:http://android.xsoftlab.net/training/keyboard-input/index.html 引言 在文本框接收到焦点时,Android系统会在屏幕上显示一个 ...

  9. Android官方开发文档Training系列课程中文版:打印内容之图像打印

    原文地址:http://android.xsoftlab.net/training/printing/index.html 引言 Android用户会很频繁的浏览设备上的内容,但是有部分情况例外,当屏 ...

  10. Android官方开发文档Training系列课程中文版:分享文件之配置文件共享

    原文地址:http://android.xsoftlab.net/training/secure-file-sharing/index.html 导言 APP经常需要给其它的APP提供一个或多个文件. ...

最新文章

  1. ※编程随笔※=☆编程基础☆=※№ SVN工具自动属性 $Author$ $Date$ $Revision$ $URL$ $Header$替换...
  2. C 语言编程 — 基本语法
  3. 【C 语言】数据类型本质 ( sizeof 函数 | 数据类型大小 )
  4. Python面试必知(四)
  5. Vuex-状态管理模式
  6. 计算机软件无形资产机械工具,考前秘籍,无形资产的定义及确认
  7. 邮件退订_如何方便地退订邮件列表
  8. mmp格式转换_mmp是什么意思
  9. IT服务管理流程控制主要绩效指标有哪些?
  10. linux V4L2子系统——v4l2的结构体(3)之v4l2_subdev
  11. 免费思维导图mindmanager2020下载安装(附序列号)
  12. 洛谷P3533 [POI2012]RAN-Rendezvous
  13. 【FFT-类字符串匹配】LOJ6388 [THUPC2018]赛艇 / Citing
  14. html中scr作用,可控硅的作用是什么
  15. 3个月红酒上千万的营业额:新模式下的营销奥秘
  16. PTA—C语言练习题
  17. 解决:cannot import name ‘xxx‘ from ‘xxx‘
  18. Win7的2020年1月补丁下载及打补丁方法
  19. C语言-关键字及其作用
  20. android mp4硬解码器,android 0.5.1使用硬解码出现ANR

热门文章

  1. 聊聊身边的嵌入式,为什么老司机都爱后视镜
  2. 周琦能和范志毅比高下?
  3. 嵌入生活的嵌入式,超市里的电子价签
  4. oracle不同session共享变量,SpringMVC使用oracle配置session共享
  5. 七、操作系统——动态分区分配算法(详解)
  6. conda安装pytorch1.10.1+paddlepaddle-gpu2.2.1+cuda10.2+cudnn7.6.5
  7. LeetCode 1945. 字符串转化后的各位数字之和
  8. LeetCode 1745. 回文串分割 IV(区间DP)
  9. LeetCode 929. 独特的电子邮件地址
  10. 计算机系统操作在线作业,电子科大《计算机操作系统》在线作业3