一、 输入法简介
Android InputMethodService,简称IME。看命名就知道,这是一个服务(service),但是这个Service有点特殊,是系统级别的Service,这个Service的生命周期由系统自动控制。
二、创建流程
step1. 创建自己的输入法服务
public class MyIMEService extends InputMethodService {
// 后续添加具体实现
}
step2. 和所有的服务一样,需要到配置文件中进行注册
<!--输入法服务-->
<service
android:name=".main.MyIMEService"
android:permission="android.permission.BIND_INPUT_METHOD">
<intent-filter>
<action android:name="android.view.InputMethod"></action>
</intent-filter>
<meta-data
android:name="android.view.im"
android:resource="@xml/method"/>
</service>
step3. 配置输入法对应的配置文件
<?xml version="1.0" encoding="utf-8"?>
<input-method xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="//这里的内容决定了从输入法配置中点击时跳转到的界面">
</input-method>
所以这里需要添加一个设置界面(ActivitySettingHome.java)
<!-- 输入法设置主界面 -->
<activity android:name=".activity.ActivitySettingHome"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/> // 接收的事件动作
<category android:name="android.intent.category.LAUNCHER"/> // 接收事件分类“打开”
<category android:name="android.intent.category.DEFAULT"/> // 接收事件分类“默认”
</intent-filter>
</activity>
这里布局文件和Activity代码就不贴出来了,基本是空的
OK!到了这里,我们自己的输入法服务就在系统输入法列表中有了一席之地了;
下面看看效果:
设置主界面.jpg 系统输入法列表.jpg 切换输入法列表.jpg
PS:
step3中提到的一个问题,如果在method.xml中没有配置“android:settingsActivity”节点的属性的话,在下图中的点击时不会有响应,这个属性唯一的用处好像只有这里了!
系统设置中的输入法设置界面.jpg
好了,这里对输入法的基础实现做了简要的介绍,当然现在只是一个起步,这样的实现,连基本的输入法面板界面都没有实现。下面会介绍InputMethodService的框架,到时候会给大家详细介绍界面的实现。如对本文有任何疑问,请联系我!QQ:384444740
网友评论