当前位置:首页 >> 信息与通信 >>

Android InputMethod


Android 自帶的輸入法有三種,分別為 Android Keyboard、谷歌拼音输入法、 Japanese IME。它们实际上就是 app,输入法应用程序。 源码在: /home/$USER/administrator/source_code/qct/DataDisk/U7699EP-wharton/Linux/pac kages/inputmethods 里面,对应为

LatinIME、PinyinIME、OpenWnn。 Android 的输入法框架比较复杂。从进程的角度来讲,相关功能主要分布在下面 三个位置:

客户端应用是一个包含有图形界面的应用,如地址本。图形界面上包含有能够接 收输入的编辑框,如 TextView。 输入法模块提供软键盘,将用户在软键盘上的按键输入根据某种算法(如 Zi, T9, 国笔等)转换成单词,然后传递给客户端应用。 平台部分实现一些管理功能,负责装载某个输入法模块,启动,终止该模块等。 创建一个输入法,必须继承 android.inputmethodservice.InputMethodService, 它作为一个服务,监听所有 EditText 的事件。下面是实现一个基本的输入法程 序的步骤。 1. 建立一个继承自 android.inputmethodservice.InputMethodService 的类,称 为输入法的服务类。 2. 在 AndroidManifest.xml 文件中配置这个服务类。 3. 编写一个用于显示软键盘的布局文件。 4. 覆盖 InputMethodService 类的 onCreateInputView 方法。 5. onCreateInputView 方法需要返回与第 3 步建立的布局文件对应的 View 对 象。在返回之前,一般需要设置相应控件的事件,如软键盘按钮单击事件。 6. 在输入法服务类或其他类中编写响应软键盘中按键事件的代码,如按钮单击 事件、物理键盘事件等。

在用户触发输入法显示的时候(点击输入框),InputMethodService 启动,然 后调用 onCreate() 函数,该函数在输入法第一次启动的时候调用,适合用来做 一些初始化的设置,切忌不要在代码中直接调用该函数;然后调用 onCreateInputView() 函数,在该函数中创建 KeyboardView 并返回;然后调用 onCreateCandidatesView()函数,在该函数中创建候选区实现并返回;然后调用 onStartInputView(EditorInfo attribute, boolean restarting)函数来开始输入内容, 输入结束后调用 onFinishInput()函数来结束当前的输入, 如果移动到下一个输入 框则重复调用 onStartInputView 和 onFinishInput 函数;在输入法关闭的时候调 用 onDestroy() 函数。 以下是 LatinIME 输入法分析: 输入法的设置在 res/xml/method.xml 的<input-method>标签中,主要设置两个 属性: android:settingsActivity,输入法的设置程序入口。 android:isDefault,这个输入法是不是系统的默认输入法。 LatinIME.java 中 LatinIME 继承 InputMethodService;生命周期中方法均在此 文件中实现。 最基本的字母布局由 res/xml/下面的 kbd_qwerty.xml,kbd_qwerty_black.xml 定 义,其它的还有符号布局,数字布局等也都在这个文件夹下面。当用户进行操作 时,程序就会在这些布局之间来回切换。 Row 元素说明这是一行按键的定义,Key 元素说明这是一个按键的定义。Key 元 素通过一些属性来定义每个按键,绘制 Key 的时候,主要绘制两个东西,label 和 icon。 对于 a,b,c,1,2,&等这样可以用字符来表示的键, 就绘制它的 label 属性。 对于 Shift,Alt 等这样无法用字符表示的键,就绘制它的 icon 属性。 下面是一些常用的属性介绍: Codes:代表按键对应的输出值,可以为 unicode 值或则逗号(,)分割的多个值, 也可以为一个字符串。在字符串中通过“\\”来转义特殊字符,例如 '\\n' 或则 '\\uxxxx' 。Codes 通常用来定义该键的键码,例如数字按键 1 对应的为 49;如果 提供的是逗号分割的多个值则和普通手机输入键盘一样在多个值之间切换。 keyLabel:代表按键显示的文本内容。 keyIcon:代表按键显示的图标内容,如果指定了该值则在显示的时候显示为图 片不显示文本。 keyWidth:代表按键的宽度,可以为精确值或则相对值,对于精确值支持多种单 位,例如:像素,英寸 等;相对值为相对于基础取值的百分比,为以% 或则%p 结尾,其中%p 表示相对于父容器。

keyHeight:代表按键的高度,取值同上。 horizontalGap:代表按键前的间隙(水平方向) ,取值同上。 isSticky:指定按键是否为 sticky 的。例如 Shift 大小写切换按键,具有两种状态, 按下状态和正常状态,取值为 true 或则 false。 isModifier:指定按键是否为功能键( modifier key ) ,例如 Alt 或则 Shift 。取 值为 true 或则 false。 keyOutputText:指定按键输出的文本内容,取值为字符串。 isRepeatable:指定按键是否是可重复的,如果长按该键可以触发重复按键事件 则为 true,否则为 false。 keyEdgeFlags:指定按键的对齐指令,取值为 left 或则 right。


相关文章:
Android InputMethod
Android InputMethod_信息与通信_工程科技_专业资料。Android 自帶的輸入法有三種,分別為 Android Keyboard、谷歌拼音输入法、 Japanese IME。它们实际上就是 app,输入...
android的输入法框架
frameworks/base/core/java/android/view/inputmethod 这个目录下定义了几个重要的 interface 和类。 InputMethodManager.java 实现了 InputMethodManager 类。此类调用 ...
android属性列表
android:imeActionLabel 设置 IME 动作标签。 android:includeFontPadding 设置文本是否包含顶部和底部额外空白,默认为 true。 android:inputMethod 为文本指定输入法,需要...
ANDROID:控件属性(很全)
android:imeActionLabel 设置 IME 动作标签。 android:includeFontPadding 设置文本是否包含顶部和底部额外空白,默认 为 true。 android:inputMethod 为文本指定输入法,...
调用Android中的软键盘
我们在 Android 提供的 EditText 中单击的时候,会自动的弹出软键盘,其实对于软键盘的 控制我们可以通过 InputMethodManager 这个类来实现。我们需要控制软键盘的方式...
Android进程内存统计工具procstats
* com.google.android.inputmethod.latin / u0a57: TOTAL: 100% (6.4MB-6.7MB-6.8MB/5.4MB-5.4MB-5.4MB over 21) Imp Fg: 100% (6.4MB-6.7MB-6....
Android平台输入法开发解析
为了能够在 Android 的输入法框架中 良好的运行,所有的输入法应用都需要继承特定的 service。Android 平台的输入法框架为输 入法应用定义了一个基类 InputMethod...
android输入法架构总结
android输入法架构总结_计算机软件及应用_IT/计算机_专业资料。介绍android输入法的架构分析1. 输入法系统架构 TextView InputManager IInputMethodClient IInputContex ...
android键盘输入法整体解读(转)
Android 的 API 文档在:%SDK_ROOM%/docs/reference/index.html, InputManager 类的位 置:%SDK_ROOM%/docs/reference/android/view/inputmethod/InputMethodManager....
安卓所有包描述_全翻译
提供用来交互外部设备和连接安卓设备的支持 For more information, see the android.inputmethodservice android.location USB guide. Base classes for writing input ...
更多相关标签:
android:inputmethod | android inputtype | inputmethodmanager | inputmethodservice | inputmethod | qt inputmethodhints | qinputmethod | inputmethodhints |