一钟鸵、 輸入法簡介
Android InputMethodService钉稍,簡稱IME」姿#看命名就知道贡未,這是一個服務(wù)(service),但是這個Service有點(diǎn)特殊蒙袍,是系統(tǒng)級別的Service俊卤,這個Service的生命周期由系統(tǒng)自動控制。
二害幅、創(chuàng)建流程
step1. 創(chuàng)建自己的輸入法服務(wù)
public class MyIMEService extends InputMethodService {
// 后續(xù)添加具體實(shí)現(xiàn)
}
step2. 和所有的服務(wù)一樣消恍,需要到配置文件中進(jìn)行注冊
<!--輸入法服務(wù)-->
<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. 配置輸入法對應(yīng)的配置文件
<?xml version="1.0" encoding="utf-8"?>
<input-method xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="http://這里的內(nèi)容決定了從輸入法配置中點(diǎn)擊時跳轉(zhuǎn)到的界面">
</input-method>
所以這里需要添加一個設(shè)置界面(ActivitySettingHome.java)
<!-- 輸入法設(shè)置主界面 -->
<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"/> // 接收事件分類“默認(rèn)”
</intent-filter>
</activity>
這里布局文件和Activity代碼就不貼出來了,基本是空的
OK以现!到了這里狠怨,我們自己的輸入法服務(wù)就在系統(tǒng)輸入法列表中有了一席之地了;
下面看看效果:
PS:
step3中提到的一個問題邑遏,如果在method.xml中沒有配置“android:settingsActivity”節(jié)點(diǎn)的屬性的話佣赖,在下圖中的點(diǎn)擊時不會有響應(yīng),這個屬性唯一的用處好像只有這里了记盒!
好了憎蛤,這里對輸入法的基礎(chǔ)實(shí)現(xiàn)做了簡要的介紹,當(dāng)然現(xiàn)在只是一個起步孽鸡,這樣的實(shí)現(xiàn)蹂午,連基本的輸入法面板界面都沒有實(shí)現(xiàn)。下面會介紹InputMethodService的框架彬碱,到時候會給大家詳細(xì)介紹界面的實(shí)現(xiàn)豆胸。如對本文有任何疑問,請聯(lián)系我巷疼!QQ:384444740