• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android手机输入法按键监听-dispatchKeyEvent

Android手机输入法按键监听-dispatchKeyEvent

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android手机输入法,手机输入法按键声音,手机输入法按键音,华为手机输入法按键音,搜狗手机输入法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android手机输入法按键监听-dispatchKeyEvent


最近在项目开发中遇到一个关于手机输入键盘的坑,特来记录下。

应用场景:
项目中有一个界面是用viewpaper加三个fragment写的,其中viewpaper被我屏蔽了左右滑动,上面有三个点击按钮,点击他们可以切换页面(不要问我为什么这么写,因为你不知道需求有多么的操蛋)。每个fragment里面都有五六个竖着排列的edittext。只有一个fragment里面的edittext都填写了才让跳到下一个。大致效果图如下:

这里写图片描述vc/ysLTFpaGjxuTL+8rWu/q/ycTc1rvT0MG9uPajrLK7zazK1rv6v8nE3LK70rvR+aGjtbG147v3y8S49rC0xaW1xMqxuvK74beiz9a958PmxNy5u8nPz8LX89PSzPjXqqOsxNy007Xa0ru49mZyYWdtZW50zPi1vbXatv649mZyYWdtZW50oaOho6Gj0rK+zcrHy7XF0LbPZWRpdHRleHTKx7fxzO7QtLXExdC2z87e0KfBy6GjvfvWubustq/Sss7e0KfBy6Oho6GjoTwvcD4NCjxwPjxzdHJvbmc+veK+9re9t6g8L3N0cm9uZz6jujxiciAvPg0K1tjQtEFjdGl2aXR51tC1xGRpc3BhdGNoS2V5RXZlbnTKwrz+yLu687bU06awtLz8vfjQ0LSmwO2jujwvcD4NCjxwcmUgY2xhc3M9"brush:java;"> @Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) { return true; } return super.dispatchKeyEvent(event); }

KEYCODE_DPAD_LEFT (21)、KEYCODE_DPAD_UP (19)、KEYCODE_DPAD_RIGHT (22)、KEYCODE_DPAD_DOWN (20)这四个值对应的就是键盘上的四个按钮(左、上、右、下)的值。这里我的处理方案是直接给屏蔽了他的点击事件,相应的处理逻辑可以自己写。

这里还有一点要说下:

这里写图片描述

如上图这里键盘也有自带的上下左右用于粘贴复制等操作,这四个键的keyCode跟上面四个的是一样的。不过有一点不同,就是当editText里面没有写东西的时候会检测不到按键。

再说下dispatchKeyEvent:
当键盘按下时的触发顺序 -> dispatchKeyEvent –> onUserInteraction –> onKeyDown
如果按下紧接着松开,则是触发两次。紧跟再触发–> dispatchKeyEvent –> onUserInteraction
–>onKeyUp
dispatchKeyEvent是做按键处理和分发的工作,如果你想要onKeyDown还可以接收到应该这样实现

public boolean dispatchKeyEvent(KeyEvent event){
return super.dispatchKeyEvent(event);
}

最后给大家附上键盘按键的code值:

 /** Key code constant: Unknown key code. */
    public static final int KEYCODE_UNKNOWN         = 0;
    /** Key code constant: Soft Left key.
     * Usually situated below the display on phones and used as a multi-function
     * feature key for selecting a software defined function shown on the bottom left
     * of the display. */
    public static final int KEYCODE_SOFT_LEFT       = 1;
    /** Key code constant: Soft Right key.
     * Usually situated below the display on phones and used as a multi-function
     * feature key for selecting a software defined function shown on the bottom right
     * of the display. */
    public static final int KEYCODE_SOFT_RIGHT      = 2;
    /** Key code constant: Home key.
     * This key is handled by the framework and is never delivered to applications. */
    public static final int KEYCODE_HOME            = 3;
    /** Key code constant: Back key. */
    public static final int KEYCODE_BACK            = 4;
    /** Key code constant: Call key. */
    public static final int KEYCODE_CALL            = 5;
    /** Key code constant: End Call key. */
    public static final int KEYCODE_ENDCALL         = 6;
    /** Key code constant: '0' key. */
    public static final int KEYCODE_0               = 7;
    /** Key code constant: '1' key. */
    public static final int KEYCODE_1               = 8;
    /** Key code constant: '2' key. */
    public static final int KEYCODE_2               = 9;
    /** Key code constant: '3' key. */
    public static final int KEYCODE_3               = 10;
    /** Key code constant: '4' key. */
    public static final int KEYCODE_4               = 11;
    /** Key code constant: '5' key. */
    public static final int KEYCODE_5               = 12;
    /** Key code constant: '6' key. */
    public static final int KEYCODE_6               = 13;
    /** Key code constant: '7' key. */
    public static final int KEYCODE_7               = 14;
    /** Key code constant: '8' key. */
    public static final int KEYCODE_8               = 15;
    /** Key code constant: '9' key. */
    public static final int KEYCODE_9               = 16;
    /** Key code constant: '*' key. */
    public static final int KEYCODE_STAR            = 17;
    /** Key code constant: '#' key. */
    public static final int KEYCODE_POUND           = 18;
    /** Key code constant: Directional Pad Up key.
     * May also be synthesized from trackball motions. */
    public static final int KEYCODE_DPAD_UP         = 19;
    /** Key code constant: Directional Pad Down key.
     * May also be synthesized from trackball motions. */
    public static final int KEYCODE_DPAD_DOWN       = 20;
    /** Key code constant: Directional Pad Left key.
     * May also be synthesized from trackball motions. */
    public static final int KEYCODE_DPAD_LEFT       = 21;
    /** Key code constant: Directional Pad Right key.
     * May also be synthesized from trackball motions. */
    public static final int KEYCODE_DPAD_RIGHT      = 22;
    /** Key code constant: Directional Pad Center key.
     * May also be synthesized from trackball motions. */
    public static final int KEYCODE_DPAD_CENTER     = 23;
    /** Key code constant: Volume Up key.
     * Adjusts the speaker volume up. */
    public static final int KEYCODE_VOLUME_UP       = 24;
    /** Key code constant: Volume Down key.
     * Adjusts the speaker volume down. */
    public static final int KEYCODE_VOLUME_DOWN     = 25;
    /** Key code constant: Power key. */
    public static final int KEYCODE_POWER           = 26;
    /** Key code constant: Camera key.
     * Used to launch a camera application or take pictures. */
    public static final int KEYCODE_CAMERA          = 27;
    /** Key code constant: Clear key. */
    public static final int KEYCODE_CLEAR           = 28;
    /** Key code constant: 'A' key. */
    public static final int KEYCODE_A               = 29;
    /** Key code constant: 'B' key. */
    public static final int KEYCODE_B               = 30;
    /** Key code constant: 'C' key. */
    public static final int KEYCODE_C               = 31;
    /** Key code constant: 'D' key. */
    public static final int KEYCODE_D               = 32;
    /** Key code constant: 'E' key. */
    public static final int KEYCODE_E               = 33;
    /** Key code constant: 'F' key. */
    public static final int KEYCODE_F               = 34;
    /** Key code constant: 'G' key. */
    public static final int KEYCODE_G               = 35;
    /** Key code constant: 'H' key. */
    public static final int KEYCODE_H               = 36;
    /** Key code constant: 'I' key. */
    public static final int KEYCODE_I               = 37;
    /** Key code constant: 'J' key. */
    public static final int KEYCODE_J               = 38;
    /** Key code constant: 'K' key. */
    public static final int KEYCODE_K               = 39;
    /** Key code constant: 'L' key. */
    public static final int KEYCODE_L               = 40;
    /** Key code constant: 'M' key. */
    public static final int KEYCODE_M               = 41;
    /** Key code constant: 'N' key. */
    public static fin



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android手机输入法按键监听-dispatchKeyEvent

相关文章

  • 2017-05-26Android 学习1----控件的学习,android1----
  • 2017-05-26安卓--selector简单使用,安卓--selector
  • 2017-05-26android源码解析之(四)--)IntentService
  • 2017-05-26android:Activity启动模式之singleTop
  • 2017-05-26记一次流量异常处理
  • 2017-05-26常用代码块,代码
  • 2017-05-26Android 中的长度单位详解
  • 2017-05-26Android编译错误——undefined reference to,androidundefined
  • 2017-05-26使用软引用和弱引用防止内存溢出,引用防止内存溢出
  • 2017-05-26androidStudio通过svn进行版本控制,androidstudiosvn

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • AndroidTV版(乐视超3 X55)root,将自己的软件设置为开机自启、系统软件,卸载系统应用等问题总结,androidtvx55
    • android中实现在矩形框中输入文字,可以显示剩余字数的功能,android字数
    • Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结,xamarinvs2015
    • Android安全机制
    • Linux(CentOS 7)命令行模式安装VMware Tools
    • Android动画三部曲之一 View Animation & LayoutAnimation
    • 硅谷社交8--联系人列表页面,硅谷社交8--联系人
    • 关于TabLayout的使用 ,自定义了一个框架。。。 以后写底部菜单就可以直接作为依赖库 ,不用麻烦了,tablayout框架
    • 填坑实录 Android Studio 利用 ADB WIFI 插件实现真机无线调试,androidadb
    • 认清Android Studio下的Gradle是什么

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有