Android输入法与软键盘简单分析

[原文地址:http://www.longene.org/forum/viewtopic.php?f=5&t=3935]

以源代码中/android_src/packages/inputmethod/LatinIME/为例。

我们已经知道了软键盘是由输入法调出的,并且弹出软键盘的语句为:
代码:  全选
InputMethodManager imm = null;
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(vv, InputMethodManager.SHOW_FORCED);


android.view.inputmethod.InputMethodManager,你可以通过Context.getSystemService方法来获取。它允许你和全局输入法状态进行交互,例如显式隐藏或者显示IME的输入法区域。

在输入法中,有两种可视元素,软键盘和候选字区域,即keyboard view和candiate view。
这里着重讨论的是软键盘,其实后选字区域与软键盘也大同小异。
当输入法第一次展现的时 候,InputMethodService.onCreateInputView()就会被调用。Candidates View,是候选词汇集合出现的地方。其可有可无,可以在调用InputMethodService.onCreateCandidatesView时返 回null,–这是它的默认行为。
InputMethodService.java在/android_src/frameworks/base/core/java/android/inputmethodservice/下:
阅读其中的 onCreateInputView(),结果发现该函数不执行任何代码,只返回一个null。
原来不同的输入法会重写该方法。
在latinIME中的LatinIME.java中的onCreateInputView():
代码:  全选
 195     @Override
 196     public View onCreateInputView() {
 197         mInputView = (LatinKeyboardView) getLayoutInflater().inflate(
 198                 R.layout.input, null);
 199         mKeyboardSwitcher.setInputView(mInputView);
 200         mKeyboardSwitcher.makeKeyboards();
 201         mInputView.setOnKeyboardActionListener(this);
 202         mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT, 0);
 203         return mInputView;
 204     }


由以上代码可以知道在输入法service中对软键盘进行了初始化。
在onStartInputView()函数中,传入一个EditorInfo对象来判断输入的类型,并由此弹出不同类型的软键盘,比如数字键盘,全尺寸键盘等等。
四种不同的类型为:
代码:  全选
TYPE_CLASS_NUMBER
TYPE_CLASS_DATETIME
TYPE_CLASS_PHONE
TYPE_CLASS_TEXT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值