欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android的文本和输入之创建输入法教程

程序员文章站 2023-12-04 11:15:58
输入法编辑器(ime)是让用户输入文本的控件。android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,...

输入法编辑器(ime)是让用户输入文本的控件。android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的ime,并且这个设置对整个系统都是有效的,每次只有一种输入法是可用的。

要在android系统中添加一种输入法,你就要创建一个包含继承了inputmethodservice类的类应用程序。另外,你通常还要创建一个“settings”activity,把选项传递给ime服务。你还可以定义一个用于设置的ui,让它做为系统设置的一部分来显示。

本文包含以下内容

1. ime的生命周期。

2. 在应用程序的清单中声明ime组件;

3. ime api

4. 设计ime的ui

5. 从ime中把文本发送给应用程序

6. 使用ime子类型

ime的生命周期

下图介绍ime的生命周期:

Android的文本和输入之创建输入法教程

图1.ime的生命周期

下列章节介绍如何实现ui以及代码如何跟这个生命周期相关联。

在清单中生命ime组件

在android系统中,ime是一个包含了特殊ime服务的android应用程序。应用程序的清单文件必须声明服务、申请必要的权限、提供跟action.view.inputmethod操作相匹配的intent过滤器、以及定义ime的特性的元数据。另外,还要提供一个设置界面,允许用户用它来编辑ime的行为,你可以定义一个从系统设置中能够启动的“settings”的activity。

以下清单片段声明了ime服务。它申请了允许把服务连接到系统的ime的bind_input_method权限,建立了一个跟android.view.inputmethod操作相匹配的intent过滤器,并且给ime定义了元数据:

复制代码 代码如下:

<!-- declares the input method service -->
<service android:name="fastinputime"
android:label="@string/fast_input_label"
android:permission="android.permission.bind_input_method">
<intent-filter>
<action android:name="android.view.inputmethod" />
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method" />
</service>

接下来给ime声明了用于设置的activity。它有一个action_main类型的intent过滤器,这指明了该activity是ime应用程序的主入口:
复制代码 代码如下:

<!-- optional: an activity for controlling the ime settings -->
<activity android:name="fastinputimesettings"
android:label="@string/fast_input_settings">
<intent-filter>
<action android:name="android.intent.action.main"/>
</intent-filter>
</activity>

你还可以在这个设置的ui中提供对ime设置的直接访问。