Android 软键盘相关

35、Android开发:软键盘输入模式、Intent相关要素详解 本文详细介绍了Android开发中的软键盘输入模式和Intent相关要素。通过合理设置软键盘输入模式,可以提升用户的输入体验;而Intent作为Android应用中组件通信和交互的重要机制,能够实现启动活动、发送广播、传递数据等功能。文章结合示例代码,讲解了两者的综合应用,帮助开发者更好地构建Android应用。 阅读详情

Android 软键盘相关

原文地址:http://yelinsen.iteye.com/blog/824487

 

Android2.2的Phone界面会有软键盘弹出!
原因是
Java代码 复制代码  收藏代码
  1. mDigits.setKeyListener(DialerKeyListener.getInstance());   
  2. mDigits.setInputType(InputType.TYPE_CLASS_PHONE);  
mDigits.setKeyListener(DialerKeyListener.getInstance());
mDigits.setInputType(InputType.TYPE_CLASS_PHONE);

把这两行去掉并加上一句mDigits.setInputType(InputType.TYPE_NULL);就行了!
Phone那个拨号界面对应的是Contacts下的TwelveKeyDialer.java
本身采用的是
Java代码 复制代码  收藏代码
  1. playTone(ToneGenerator.TONE_DTMF_1);//生音是否显示   
  2. keyPressed(KeyEvent.KEYCODE_1);//输入的数字  
playTone(ToneGenerator.TONE_DTMF_1);//生音是否显示
keyPressed(KeyEvent.KEYCODE_1);//输入的数字

Java代码 复制代码  收藏代码
  1. mHaptic.vibrate();//震动   
  2. KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);   
  3. mDigits.onKeyDown(keyCode, event);//keycode对应的就是KeyEvent.KEYCODE_1  
 mHaptic.vibrate();//震动
 KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
 mDigits.onKeyDown(keyCode, event);//keycode对应的就是KeyEvent.KEYCODE_1

keyCode对应的去取对应的值!这个值对应的在MultiTapKeyListener.java中有定义!

Java代码 复制代码  收藏代码
  1. static {   
  2.         sRecs.put(KeyEvent.KEYCODE_1,     ".,1!@#$%^&*:/?'=()");   
  3.         sRecs.put(KeyEvent.KEYCODE_2,     "abc2ABC");   
  4.         sRecs.put(KeyEvent.KEYCODE_3,     "def3DEF");   
  5.         sRecs.put(KeyEvent.KEYCODE_4,     "ghi4GHI");   
  6.         sRecs.put(KeyEvent.KEYCODE_5,     "jkl5JKL");   
  7.         sRecs.put(KeyEvent.KEYCODE_6,     "mno6MNO");   
  8.         sRecs.put(KeyEvent.KEYCODE_7,     "pqrs7PQRS");   
  9.         sRecs.put(KeyEvent.KEYCODE_8,     "tuv8TUV");   
  10.         sRecs.put(KeyEvent.KEYCODE_9,     "wxyz9WXYZ");   
  11.         sRecs.put(KeyEvent.KEYCODE_0,     "0+");   
  12.         sRecs.put(KeyEvent.KEYCODE_POUND, " ");   
  13.     };  
static {
        sRecs.put(KeyEvent.KEYCODE_1,     ".,1!@#$%^&*:/?'=()");
        sRecs.put(KeyEvent.KEYCODE_2,     "abc2ABC");
        sRecs.put(KeyEvent.KEYCODE_3,     "def3DEF");
        sRecs.put(KeyEvent.KEYCODE_4,     "ghi4GHI");
        sRecs.put(KeyEvent.KEYCODE_5,     "jkl5JKL");
        sRecs.put(KeyEvent.KEYCODE_6,     "mno6MNO");
        sRecs.put(KeyEvent.KEYCODE_7,     "pqrs7PQRS");
        sRecs.put(KeyEvent.KEYCODE_8,     "tuv8TUV");
        sRecs.put(KeyEvent.KEYCODE_9,     "wxyz9WXYZ");
        sRecs.put(KeyEvent.KEYCODE_0,     "0+");
        sRecs.put(KeyEvent.KEYCODE_POUND, " ");
    };


根据这个MultiTapKeyListener.java的注释
Java代码 复制代码  收藏代码
  1. /**  
  2.  * This is the standard key listener for alphabetic input on 12-key  
  3.  * keyboards.  You should generally not need to instantiate this yourself;  
  4.  * TextKeyListener will do it for you.  
  5.  */  
/**
 * This is the standard key listener for alphabetic input on 12-key
 * keyboards.  You should generally not need to instantiate this yourself;
 * TextKeyListener will do it for you.
 */

说明实际是由TextKeyListener.java来控制的!
Java代码 复制代码  收藏代码
  1. @Override  
  2.    public boolean onKeyDown(View view, Editable content,   
  3.                             int keyCode, KeyEvent event) {   
  4.        KeyListener im = getKeyListener(event);   
  5.   
  6.        return im.onKeyDown(view, content, keyCode, event);   
  7.    }  
 @Override
    public boolean onKeyDown(View view, Editable content,
                             int keyCode, KeyEvent event) {
        KeyListener im = getKeyListener(event);

        return im.onKeyDown(view, content, keyCode, event);
    }

KeyListener 接口对应的返回实例在这里类型有两种!
Java代码 复制代码  收藏代码
  1. private KeyListener getKeyListener(KeyEvent event) {   
  2.         KeyCharacterMap kmap = KeyCharacterMap.load(event.getKeyboardDevice());   
  3.         int kind = kmap.getKeyboardType();   
  4.   
  5.         if (kind == KeyCharacterMap.ALPHA) {   
  6.             return QwertyKeyListener.getInstance(mAutoText, mAutoCap);   
  7.         } else if (kind == KeyCharacterMap.NUMERIC) {   
  8.             return MultiTapKeyListener.getInstance(mAutoText, mAutoCap);   
  9.         }   
  10.   
  11.         return NullKeyListener.getInstance();   
  12.     }  
private KeyListener getKeyListener(KeyEvent event) {
        KeyCharacterMap kmap = KeyCharacterMap.load(event.getKeyboardDevice());
        int kind = kmap.getKeyboardType();

        if (kind == KeyCharacterMap.ALPHA) {
            return QwertyKeyListener.getInstance(mAutoText, mAutoCap);
        } else if (kind == KeyCharacterMap.NUMERIC) {
            return MultiTapKeyListener.getInstance(mAutoText, mAutoCap);
        }

        return NullKeyListener.getInstance();
    }


Java代码 复制代码  收藏代码
  1. /**  
  2.     * Returns {@link #NUMERIC}, {@link #PREDICTIVE} or {@link #ALPHA}.  
  3.     */  
  4.    public int getKeyboardType()   
  5.    {   
  6.        return getKeyboardType_native(mPointer);   
  7.    }  
 /**
     * Returns {@link #NUMERIC}, {@link #PREDICTIVE} or {@link #ALPHA}.
     */
    public int getKeyboardType()
    {
        return getKeyboardType_native(mPointer);
    }

private static native int getKeyboardType_native(int ptr);返回NUMERIC数值类型或ALPHA希腊字母类型或PREDICTIVE这个返回的实际就是空的类型.

最后这个值是怎么取出来的列!已返回QwertyKeyListener.getInstance(mAutoText, mAutoCap);为例。
在QwertyKeyListener的onKeyDown方法中的
Java代码 复制代码  收藏代码
  1. int i = event.getUnicodeChar(getMetaState(content));  
 int i = event.getUnicodeChar(getMetaState(content));


Java代码 复制代码  收藏代码
  1. public int getUnicodeChar(int meta) {   
  2.        return KeyCharacterMap.load(mDeviceId).get(mKeyCode, meta);   
  3.    }  
 public int getUnicodeChar(int meta) {
        return KeyCharacterMap.load(mDeviceId).get(mKeyCode, meta);
    }


Java代码 复制代码  收藏代码
  1. private static native char get_native(int ptr, int keycode,   
  2.                                    int meta);  
 private static native char get_native(int ptr, int keycode,
                                    int meta);


键布局映射文件通常放在/system/usr/keylayout和/data/usr/keylayout

对于每一个键盘设备xxx,设置系统属性android.keylayout.xxx,如果没有为自己的硬件设备创建一个特定的设备,Android将去读/system/usr/keylayout/qwerty.kl这个配置文件。

Java代码 复制代码  收藏代码
  1.   
  2. key 399   GRAVE   
  3. key 2     1  
  4. key 3     2  
  5. key 4     3  
  6. key 5     4  
  7. key 6     5  
  8. key 7     6  
  9. key 8     7  
  10. key 9     8  
  11. key 10    9  
  12. key 11    0  
  13. key 158   BACK              WAKE_DROPPED   
  14. key 230   SOFT_RIGHT        WAKE   
  15. key 60    SOFT_RIGHT        WAKE   
  16. key 107   ENDCALL           WAKE_DROPPED   
  17. key 62    ENDCALL           WAKE_DROPPED   
  18. key 229   MENU              WAKE_DROPPED   
  19. key 139   MENU              WAKE_DROPPED   
  20. key 59    MENU              WAKE_DROPPED   
  21. key 127   SEARCH            WAKE_DROPPED   
  22. key 217   SEARCH            WAKE_DROPPED   
  23. key 228   POUND   
  24. key 227   STAR   
  25. key 231   CALL              WAKE_DROPPED   
  26. key 61    CALL              WAKE_DROPPED   
  27. key 232   DPAD_CENTER       WAKE_DROPPED   
  28. key 108   DPAD_DOWN         WAKE_DROPPED   
  29. key 103   DPAD_UP           WAKE_DROPPED   
  30. key 102   HOME              WAKE   
  31. key 105   DPAD_LEFT         WAKE_DROPPED   
  32. key 106   DPAD_RIGHT        WAKE_DROPPED   
  33. key 115   VOLUME_UP   
  34. key 114   VOLUME_DOWN   
  35. key 116   POWER             WAKE   
  36. key 212   CAMERA   
  37.   
  38. key 16    Q   
  39. key 17    W   
  40. key 18    E   
  41. key 19    R   
  42. key 20    T   
  43. key 21    Y   
  44. key 22    U   
  45. key 23    I   
  46. key 24    O   
  47. key 25    P   
  48. key 26    LEFT_BRACKET   
  49. key 27    RIGHT_BRACKET   
  50. key 43    BACKSLASH   
  51.   
  52. key 30    A   
  53. key 31    S   
  54. key 32    D   
  55. key 33    F   
  56. key 34    G   
  57. key 35    H   
  58. key 36    J   
  59. key 37    K   
  60. key 38    L   
  61. key 39    SEMICOLON   
  62. key 40    APOSTROPHE   
  63. key 14    DEL   
  64.            
  65. key 44    Z   
  66. key 45    X   
  67. key 46    C   
  68. key 47    V   
  69. key 48    B   
  70. key 49    N   
  71. key 50    M   
  72. key 51    COMMA   
  73. key 52    PERIOD   
  74. key 53    SLASH   
  75. key 28    ENTER   
  76.            
  77. key 56    ALT_LEFT   
  78. key 100   ALT_RIGHT   
  79. key 42    SHIFT_LEFT   
  80. key 54    SHIFT_RIGHT   
  81. key 15    TAB   
  82. key 57    SPACE   
  83. key 150   EXPLORER   
  84. key 155   ENVELOPE           
  85.   
  86. key 12    MINUS   
  87. key 13    EQUALS   
  88. key 215   AT  
java 使用KeyListener监听键盘 java 使用KeyListener监听键盘 java 使用KeyListener监听键盘 立即下载

相关推荐

MTK平台外文手机Multitap输入按键定义对照表

MTK平台外文手机Multitap输入按键定义对照表,包涵了各国语言的按键定义

AndroidR Input子系统(6)解析“.kcm“文件

上一篇文章分析了".kl"文件的解析,".kl"文件的作用是将linux scancode转换为Android keycode,相比之下".kcm"文件的解析要复杂一些。 “.kcm"文件意为按键字符映射文件,作用是将 Android按键代码与修饰符的组合映射到 Unicode字符,注意这里提到组合,意思是它可以提供组合按键功能,其实就目前的Android手机来说,基本都是全触摸屏,除了外接键盘,否则已经很少会用到”.kcm"文件了,但我们出于学习的目的还是来分析下其内部解析原理,和".kl"文件一样,系统

qq_34211365的博客 2410

51单片机独立按键控制LED(二)

对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。独立按键控制LED显示二进制。独立按键控制LED灯亮灭。独立按键控制LED状态。独立按键控制LED移位。

m0_50562428的博客 5381

Android 系列 2.12使用KeyListener控制输入

2.12使用KeyListener控制输入 问题 您的应用程序包含要在其中限制用户仅输入数字的文本框; 此外,在某些情况下,您只希望允许使用正数,整数或日期。 解 Android提供了KeyListener类来帮助您限制用户只输入数字/正数/整数/正整数等等。 讨论 Android.text.method包包含一个KeyListener接口,以及一些类,例如DigitsKeyL

曹浩洋的专栏 2847

量化策略缺数据?一份QMT/PTrade免费数据清单与特殊数据源QtFactor评测

本文为量化策略开发者提供QMT和PTrade平台的免费数据资源清单,并深度评测QtFactor在补充特色数据方面的价值。涵盖Tick级数据、Level2行情、资金流向等关键信息,帮助开发者在预算有限的情况下构建高效数据解决方案,特别适合打板策略和日内回转交易。

weixin_29058331的博客 410

Cocos Creator+微信小游戏:如何用wxDownloader实现资源动态加载与热更新

本文深入探讨了在Cocos Creator开发微信小游戏时,如何利用wxDownloader有效应对主包体积限制,实现资源的动态加载与热更新。文章详细介绍了从项目配置、资源标记到初始化加载的完整流程,并重点解析了基于MD5 Cache的缓存策略与版本控制方案,旨在帮助开发者构建稳健高效的资源管理体系,优化游戏启动速度与更新体验。

css33的专栏 822

拔号界面显示阿拉伯数字

mtk 6580 android 5.1 /6.0 在阿拉伯文下,拔号盘的数字显示成了阿拉伯,但输出显示的还是数字。在DialpadFragment.java里面,对输入的数字做了监听 mDigits.setKeyListener(UnicodeDialerKeyListener.INSTANCE); 所以要从这里入手。可以看到UnicodeDialerKeyListener.java的代...

shiyudong的专栏 413

解读文献(五)------基于阻抗控制

文章目录背景主动柔顺控制阻抗控制基于力的阻抗控制基于位置的阻抗控制力位混合控制 背景 主动柔顺控制 阻抗控制 基于力的阻抗控制 基于位置的阻抗控制 力位混合控制 ...

accumulation 1万+

Android5.1 Dialer digits 大小

本篇文章记录digits大小修改,也就是上图中红色圈中的字体大小 通过Android-sdk工具Hierarchy view 查看本界面的进程是: 打开DialtactsActivity,发现好多代码,这怎么看呢?首先我们一般从onCreate 方法入手,还是有点多怎么办,可以在用Android-sdk工具Hierarchy view查看本页面的布局,从查找对应的id–

哦麻类麻类哄 1289

EtherCat 从站开发中遇到的问题分享

EtherCat从站 AX58100

yu_arius的博客 2058

Office 365中的Assigned Access详细功能介绍

本文系统介绍了Office365中AssignedAccess功能的应用与管理。作为Windows系统的重要安全特性,AssignedAccess可将设备锁定为单应用模式,有效防范未授权访问。文章详细阐述了其核心功能、技术架构及配置方法,包括UWP/Win32应用支持、多用户配置、与AzureAD集成等。通过MicrosoftEndpointManager可实现批量部署和远程监控,适用于公共终端、零售设备等场景。该功能为企业数字化转型提供了安全、可控的终端管理方案,在保障数据安全的同时优化用户体验。

xueyunshengling的博客 226

安卓软键盘相关问题

安卓软键盘相关问题 遮挡问题 软键盘弹出后遮挡EditTextView问题只需要在注册清单中加入adjustPan属性即可 AndroidManifast。 // adjustPan 与 adjustResize <activity android:name=".xxx" android:windowSoftInputMode="adjustPan"/> 获取屏幕高度 此处获取的为真实显示的px值 DisplayMetrics outMetrics = new Disp

Li_Heishuai的博客 342

【功能安全】【AutoSAR】程序流监控机制

目录 一、程序流执行的常见故障 二、程序流的监控机制 1、监控功能的实现 2、三种监督机制 a、生命监测机制 b、截止时间监测机制 c、逻辑程序流监测机制 一、程序流执行的常见故障 与程序流相关的故障,在ISO26262中第六章附录D中定义如下: — 执行阻塞; — 死锁; — 活锁; — 执行时间的不正确分配; — 软件要素间的不正确同步。 二、程序流的监控机制 1、监控功能的实现 AutoSAR中对程序流的监控功能的实现主要有“看门狗”栈(Watchdog Stack).

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4517

Android软键盘相关

1 Android显示和隐藏软键盘方法 1.1 InputMethodManager类 Android中软键盘的管理主要是通过InputMethodManager类来完成的。InputMethodManager对象的获取方法如下: InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Conte...

It一zhai男 523

HSM 网络安全 信息安全

HSM HSM信息安全功能 汽车电子网络安全中HSM 的应用场景 选择适合汽车电子网络安全的 HSM 符合汽车安全标准和法规要求的HSM HSM 在汽车电子网络安全中的可靠性和安全性 评估汽车电子网络的安全性 汽车 HSM(Hardware Security Module)模块开发 汽车 HSM(Hardware Security Module)模块测试

天赐好车的博客 1236

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android学习之软键盘设置相关

main.xml布局文件: <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_pa

cheer_zhang的专栏 980

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

安卓软键盘相关

有个哥们给EditText对应的Activity配置了stateHidden.然后问 问啥在textchange的时候调用接口会隐藏软键盘,原因如下: The AndroidManifest.xml File android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateH

Encode_myself的专栏 644

假人有限元模型

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

android EditText软键盘相关操作

一、显示软盘设置 1、一般android的EditText当获取焦点后都会自动弹出软件盘,但有在模拟器中可能可以直接用电脑键盘代替软键盘进行输入,看不到弹出软件盘,这时就需要编辑模拟器了,如下图: 2、默认的软盘显示的action是“Next”,点击会到下一个输入框,如下: 但设置EditText的“imeOptions”相关属性可以修改此键,如设置:android:imeOpt

ll397879213的专栏 9113

Android 软键盘相关的知识点

前言:Android中的软键盘实质就是一个Dialog,在开发的过程中,为了更好的体验,经验需要某个点击事件后隐藏或者显示软键盘,下面就讲我自己遇到的需求汇总下。1.点击键盘以外的区域,软件盘隐藏。 // 获取点击事件 @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.get

Young 510

android activity 叠加 软键盘,软键盘相关

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?Android软键盘相关处理项目中有类似陌陌输入框的UI,因为Edittext不在输入框底部,导致软键盘弹出时显示在Edittext底部而遮挡掉输入框部分UI,目前采用的方法是对Viewtree进行监听,软键盘弹起来时,进行scrollTo移动输入框123456789101112131415161718192021222...

weixin_30878051的博客 365

Android软键盘相关的知识

1、收起某Activity中的软键盘 public static void hideIMEInThisActivity(Activity activity) { View view = activity.getCurrentFocus(); if (view == null) { Log.d("", "没找到焦点view");

沐怡旸的专栏 744

PSR电源EMC设计实战:从骚扰源抑制到PCB布局优化

开关电源的EMC设计核心在于理解骚扰源、耦合路径与敏感设备三要素。在PSR原边反馈架构中,开关节点振铃、变压器层间电容和副边二极管反向恢复构成主要噪声源,其dv/dt和di/dt更陡,导致辐射骚扰在30MHz-100MHz频段尤为突出。通过屏蔽绕组正确接地、三明治绕法优化漏感、开关节点走线缩短加粗以及地线单点连接等工程手段,可从源头抑制噪声,减少对吸收电路和滤波元件的依赖。这些方法在小功率适配器、充电器等场景中,能有效提升EMC余量并保障量产一致性。

weixin_33842304的博客 391

Android开发之软键盘相关

废话不说,上代码。 ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(this .getCurrentFocus().getWindowToken(),

lihandsome的专栏 1012
上一篇: android 输入法 框架
下一篇: Android开发文档学习:NFC(近场通讯)(一)
androidboy365
博客等级 码龄16年 35粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值