no Pain no Gain no Gavin 博客同步更新至:http://blog.sina.com.cn/deaboway http://blog.csdn.net/deaboway
最近工作比较忙,加班出差,因此更新慢了些。今天刚好有空,写一篇实例
详解吧。
本博前面的文章介绍了 Android 开发环境的搭建和模拟器的常用操作。本
次,将以 Android Sample 中经典的 SoftKeyboard 项目为例,详细解析 Android 上一
个小型项目的开发过程和注意事项。
从 SDK 1.5 版本以后,Android 就开放它的 IMF(Input Method
Framework),让我们能够开发自己的输入法。而开发输入法最好的参考就是
Android 自带的 Sample-SoftKeyboard,虽然这个例子仅包含英文和数字输入,但是
它本身还算完整和清楚,对我们开始 Android 开发实战有很大帮助。
一、IMF 简介
一个 IMF 结构中包含三个主要的部分:
input method manager:管理各部分的交互。它是一个客户端 API,存在于各
个应用程序的 context 中,用来沟通管理所有进程间交互的全局系统服务。
input method(IME):实现一个允许用户生成文本的独立交互模块。系统绑定
一个当前的输入法。使其创建和生成,决定输入法何时隐藏或者显示它的 UI。同
一时间只能有一个 IME 运行。
client application:通过输入法管理器控制输入焦点和 IME 的状态。一次只能
有一个客户端使用 IME。
1、InputManager
由 UI 控件(View,TextView,EditText 等)调用,用来操作输入法。比如,打
开,关闭,切换输入法等。
它是整个输入法框架(IMF)结构的核心 API,处理应用程序和当前输入法的
交互。可以通过 Context.getSystemService()来获取一个 InputMethodManager 的实
例。
在开发过程中,最基础最重要的就是养成阅读 API 的习惯。优秀的程序员要
养成把自己关在小黑屋里,断绝与外界的联网和联系,仅仅靠自己电脑中的开发环
境和 API 文档,以及漂亮女仆送来的每天三顿饭,写出优秀的程序。这个在武侠
小说中叫闭关,在软件开发中叫 Clean Room,哈哈。
Android 的 API 文档在:%SDK_ROOM%/docs/reference/index.html,
InputManager 类的位置:
%SDK_ROOM%/docs/reference/android/view/inputmethod/InputMethodManager.html
由于,该类跟本次要讲的 Sample 关系不大,这里就不详细分析,请各位自行
阅读 API doc 吧。
2、InputMethodService
包括输入法内部逻辑,键盘布局,选词等,最终把选出的字符通过
commitText 提交出来。实现输入法的基础就是名为 InputMethodService 的类,比
如你要实现一个谷歌输入法,就是要 extends 本类。我们接下来要学习的
1