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中,有使用这个方法。

相关推荐
1. 输入法服务理解:通过分析`SoftKeyboard`,开发者能理解如何创建一个自定义的输入法服务,了解`InputMethodService`的工作机制。 2. 键盘视图实现:`KeyboardView`是输入法的关键组件,学习其内部实现可以帮助...
### Android开发实例详解之IMF (Android_SDK_Sample—SoftKeyboard) #### 一、IMF简介 在深入了解SoftKeyboard项目之前,我们先简要介绍一下IMF(Input Method Framework)。随着Android SDK 1.5版本的发布,...
《Android-L SoftKeyboard详解》 在Android开发领域,SoftKeyboard是一个重要的组成部分,它是指系统或应用内提供的虚拟键盘。在Android-L(即Android 5.0)版本中,Google提供了SoftKeyboard的示例代码,帮助...
【标题】"Android-development-sample---IMF.rar"与"Android softKeyboard_androi"结合,意味着这是一个关于Android开发的示例项目,特别关注于实现输入法框架(Input Method Framework,简称IMF),并且涉及到软...
本资源“SoftKeyboard.rar”提供了适用于Android Studio的手机输入法源码样例,解决了原先仅支持Eclipse开发环境的问题,使得开发者能够更方便地在现代的Android开发环境中进行学习和实践。 首先,我们来了解...