实现一个Android输入法

原文来自Android Developer Guide,本文为原文翻译,如有错误,欢迎指出。

输入法(IME:Input method editor)是一个能够让用户输入文本的工具。Android提供了一个可扩展的输入法框架,允许应用为用户提供不同的输入法,比如触屏键盘甚至语音输入。只要安装,用户就可以从系统设置中选择自己喜欢使用的输入法,并且在整个系统环境中使用;在同一时刻,只有一种输入法可以使用。

要在Android系统中创建一个输入法,你创建的应用需要包含继承自InputMethodService的类。此外,通常还要创建一个”settings”的activity,用来向IME服务传递参数选项。你也可以自定义设置界面,把它作为系统设置的一部分。

本文包括以下内容:

  • 输入法的生命周期
  • 在application manifest中声明IME组件
  • 输入法 API
  • 设计输入法的用户界面
  • 从输入法向应用程序发送文本
  • 创建不同类型的输入法

如果你之前没有做过输入法的相关东西,你应该先阅读这篇介绍性的文章Onscreen Input Methods。此外,SDK中包含的Soft Keyboard sample app项目里面有样例代码,你可以修改它们,然后开始创建自己的输入法。

输入法的生命周期

下图描述了一个输入法的生命周期:

Android输入法生命周期

接下来的部分描述了如何实现遵循这一生命周期,实现输入法代码和界面。

在application manifest中声明IME组件

在Android系统中,输入法是一个包含指定的IME服务的Android应用,应用的mainifest文件必须声明此服务,请求所需的权限,提供和action.view.InputMethod匹配的intent filter,并且提供包含输入法一些参数的元数据。此外,若想提供一个允许用户修改输入法行为的设置界面,你要定义一个能从系统设置中启动的settingsactivity。

下面的代码声明了一个输入法的service.它请求了BIND_INPUT_METHOD 权限,来允许服务把IME和系统关联起来,创建一个intent filter来匹配android.view.InputMethod,并且定义了输入法的元数据。

<!-- 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>

下一个代码片段声明了输入法的设置activity.它包含了一个ACTION_MAINintent filter,表示此activity作为整个输入法应用的入口。

<!-- 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>

你也可以在输入法界面中直接提供用户设置。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值