LatinIME輸入法的一些總結

2021-06-13 16:44:53 字數 1546 閱讀 5967

1.關於輸入法的一些設定重要檔案

res/xml/method.xml

在該檔案中在前面的部落格中說明可以新增鍵盤輸入語言。

另外,還有其他的一些重要的設定:

輸入法的設定在res/xml/method.xml的標籤中,主要設定兩個屬性:

android:settingsactivity,輸入法的設定程式入口。

android:isdefault,這個輸入法是不是系統的預設輸入法。

2.adb push與adb install的區別

3.鍵盤的各種布局檔案

最基本的字母布局由res/xml/下面的kbd_qwerty.xml,kbd_qwerty_black.xml定義,其它的還有符號布局,數字布局等也都在這個資料夾下面。當使用者進行操作時,程式就會在這些布局之間來回切換。如果想新增不同語言的輸入鍵盤,也是在這個目錄下新增kbd的xml檔案。

對這些布局的解析由keyboard(位於framework中)以及它的子類latinime(位於latin輸入法的原始碼中)一起完成,涉及到的主要方法有:

1、loadkeyboard:解析布局檔案

2、latinkeyboard.createkeyfromxml,keyboard.createkeyfromxml:從xml檔案建立乙個按鍵。

3、getdimensionorfraction:獲取某乙個屬性的值。這個屬性值的格式必須規定為dimen(dip,px,sp,in等)或者fraction(百分比)的。

4、latinkeyboardbase.onbufferdraw:把所有的key繪製在一張bitmap上,再由繼承自viewondraw方法把這張bitmap渲染到ondraw傳遞過來的canvas上。

4.繪製key的大概理解

繪製key的時候,主要繪製兩個東西,label和icon。對於a,b,c,1,2,&等這樣可以用字元來表示的鍵,就繪製它的label屬性。對於shift,alt等這樣無法用字元表示的鍵,就繪製它的icon屬性。

另外,大部分key只繪製icon或label中的乙個。而少部分key,兩個都繪製。比如qwertyuiop這幾個key,還會在key的右上方有乙個小的數字,這些小數字每乙個都是乙個icon,存放在latinkeyboard的mnumberhinticons陣列中。而qwertyuiop這幾個key是一組比較特殊的key,它們會在latinkeyboard中有乙個引用備份:mnumberhintkeys。每次使用者按shift來更新鍵盤布局時,除了會更新這幾個key的label之外,都會呼叫updatenumberhintkeys方法把它們的icon也賦值。

5.輸入法顯示問題

latinime布局混亂,開啟這個輸入法時,整個輸入法介面被擠在螢幕下方乙個高度很小的矩形範圍內。輸入法的布局的高度寬度,每個key的高度寬度等資訊都是定義在dimens.xml中的。而在dimens.xml中,這些尺寸的單位都是in,在程式當中把這些單位轉化成畫素以後,是個很小的值。最後把這些尺寸單位改為dip,並設定好合適的值就好了。看來是系統移植到板子上以後,in和畫素之間進行轉換時出問題了。

(注:通篇有參考也加上了自己的理解,感謝android老碼農~~)

LatinIME輸入法分析

輸入法的設定在res xml method.xml的標籤中,主要設定兩個屬性 android settingsactivity,輸入法的設定程式入口。android isdefault,這個輸入法是不是系統的預設輸入法。最基本的字母布局由res xml 下面的kbd qwerty.xml,kbd q...

LatinIME輸入法分析

輸入法的設定在res xml method.xml的標籤中,主要設定兩個屬性 android settingsactivity,輸入法的設定程式入口。android isdefault,這個輸入法是不是系統的預設輸入法。最主要的字母布局由res xml 以下的kbd qwerty.xml,kbd q...

關於android輸入法的一些記錄

二 關閉出入法視窗 如下 nputmethodmanager inputmethodmanager inputmethodmanager getsystemservice context.input method service inputmethodmanager.hidesoftinputfro...