Android SDK中提供软键盘输入法的示例,希望通过对它的分析,可以掌握如何从零开始实现输入法。以下内容拟采用UML中Sequence Diagram(时序图)的形式,剖析其处理流程。
init
需要特别说明的是,由于SoftKeyboard这个名称,会使人误解其是KeyBoard的子类,因此特意重构名称为SampleInputMethodService。
万事万物都要回答这样一个问题:从哪里来到哪里去?针对输入法而言,这个问题就是:输入法如何初始化。输入法在Android中的本质就是一个Service,假设用户刚刚启动Android,用户移动焦点首次进入文本编辑框时,Android便会通知Service开始进行初始化工作。于是便有了如图中的一系列动作。
追根溯源,onCreate方法继承至Service类,其意义和其他Service的是一样的。示例在这里,做了一些非UI方面的初始化,即字符串变量词汇分隔符的初始化。
接下来执行onInitializeInterface,这里是进行UI初始化的地方,创建以后和配置修改以后,都会调用这个方法。示例在这里对Keyboard进行了初始化,从XML文件中读取软键盘信息,封装进Keyboard对象。
第三个执行的就是onStartInput方法,在这里,我们被绑定到了客户端,接收所有关于编辑对象的详细信息。
第四个执行的方法是onCreateInputView,在用户输入的区域要显示时,这个方法由框架调用,输入法首次显示时,或者配置信息改变时,该方法就会被执行。在该方法中,对inputview进行初始化:读取布局文件信息,设置onKeyboardActionListener,并初始设置keyboard。
第五个方法是onCreateCandidatesView,在要显示候选词汇的视图时,由框架调用。和onCreateInputView类似。在这个方式中,对candidateview 进行初始化。
第六个方法,也是最后一个方法,即onStartInputView,正是在这个方法中,将inputview和当前keyboard重新关联起来。
在上面的六个方法中,onCreateInputView和onCreateCandidatesView两个方法只有在初始化时才会执行一次,除非有配置信息发生改变。那么究竟什么是配置信息发生改变呢?在看InputMethodService的API文档时,可以看到有一个方法onConfigurationChanged,根据文档解释,这个方法主要负责配置更改的情况。在示例中,其没有override这个方法,但是在android源码包中的PinyinIME中,有使用这个方法。
相关推荐
本文将以Android Sample中经典的SoftKeyboard项目为例,详细解析Android上一个小型项目的开发过程和注意事项。章节如下:一、IMF简介 二、创建Eclipse工程 三、配置和...更多>> 本文将以Android Sample中经典的...
Android-L版本sdk下的SoftKeyboard sample
Android开发实例详解之IMF(Android_S DK_Sample—SoftKeyboard)
SoftKeyboard Android SoftKeyboard 输入法使用范例
Android SoftKeyboard Listener Demo
android sdk中 softkeyboard 的修改 可綁定輸入法於客戶端
研究android输入法最好的参考代码:Android自带的Sample。
研究android输入法最好的参考代码:Android自带的Sample。
官方的一个输入法demo实现。给到初学者很好的学习
带有 J/Migemo 的软键盘截屏
softkeyboard
键盘CSS 使用HTML和CSS构建的键盘UI以及来自语义UI的调整使用的概念HTML,CSS和Semanitc UI(用于网格)
SoftKeyboard插件固定的分叉在文件org.apache.cordova.plugin.softkeyboard.SoftKeyboard.java中,将所有“ webView”引用更改为“ webView.getView()”,这是由cordova lib中的更改强制执行的。 CordovaWebView...
implementation 'com.github.blueskky:SoftKeyBoard:1.0.0' } 在activity中 activity要设为横屏 KeyboardType.MULTI_MAXIMUM 指定第一次出现时键盘类型 KeyboardConfig configure = new KeyboardConfig(); ...
用Qt做的软键盘代码,网上摘的,当然了在4.6后的版本里都有软键盘的demo。
Qt5虚拟键盘Demo,带中文输入,其也可以支持Qt4的(不在本demo中) https://blog.csdn.net/qq21497936/article/details/111831179
jquery-softkeyboard-js 软键盘js,非常适合初学者学习研究!