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

 更新时间:2012年12月20日 11:36:37   作者:  
输入法编辑器(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的生命周期:

图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设置的直接访问。

相关文章

  • Android APT 实现控件注入框架SqInject的示例

    Android APT 实现控件注入框架SqInject的示例

    这篇文章主要介绍了Android APT 实现控件注入框架SqInject的示例,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • Android自定义控件实现UC浏览器语音搜索效果

    Android自定义控件实现UC浏览器语音搜索效果

    这篇文章主要为大家详细介绍了Android自定义控件实现UC浏览器语音搜索效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • android仿支付宝密码输入框效果

    android仿支付宝密码输入框效果

    这篇文章主要为大家详细介绍了android仿支付宝密码输入框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 手势滑动结束Activity基本功能的实现(一)

    手势滑动结束Activity基本功能的实现(一)

    这篇文章主要为大家详细介绍了手势滑动结束Activity基本功能的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • android studio集成ijkplayer的示例代码

    android studio集成ijkplayer的示例代码

    本篇文章主要介绍了android studio集成ijkplayer的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • android蓝牙控制PC端代码分享

    android蓝牙控制PC端代码分享

    这篇文章主要为大家分享了android蓝牙控制PC端的详细代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android保存联系人到通讯录的方法

    Android保存联系人到通讯录的方法

    怎么保存联系人数据到本机通讯录?这篇文章主要为大家详细介绍了Android保存联系人到通讯录的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android中截取当前屏幕图片的实例代码

    Android中截取当前屏幕图片的实例代码

    该篇文章是说明在Android手机或平板电脑中如何实现截取当前屏幕的功能,并把截取的屏幕保存到SDCard中的某个目录文件夹下面。实现的代码如下:
    2013-08-08
  • Android设置闹钟相对完善的解决方案

    Android设置闹钟相对完善的解决方案

    这篇文章主要为大家详细介绍了Android设置闹钟相对完善的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Kotlin Job启动流程源码层深入分析

    Kotlin Job启动流程源码层深入分析

    如果要我拿现实中的一事物与Kotlin协程中的Job做一个类比,那么我会把Job比作成海洋中的冰山。自由漂浮的冰山约有90%体积沉在海水表面下,因此看着浮在水面上的形状并猜不出水下的形状
    2022-11-11

最新评论