Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Sample : SoftKeyboard 分析

Android Sample : SoftKeyboard 分析

編輯:Android開發實例

Android SDK中提供軟鍵盤輸入法的示例,希望通過對它的分析,可以掌握如何從零開始實現輸入法。以下內容擬采用UML中Sequence Diagram(時序圖)的形式,剖析其處理流程。

init
需要特別說明的是,由於SoftKeyboard這個名稱,會使人誤解其是KeyBoard的子類,因此特意重構名稱為SampleInputMethodService。
萬事萬物都要回答這樣一個問題:從哪裡來到哪裡去?針對輸入法而言,這個問題就是:輸入法如何初始化。輸入法在Android中的本質就是一個
Service,假設用戶剛剛啟動Android,用戶移動焦點首次進入文本編輯框時,Android便會通知Service開始進行初始化工作。於是便
有了如圖中的一系列動作。
追根溯源,onCreate方法繼承至Service類,其意義和其他Service的是一樣的。示例在這裡,做了一些非UI方面的初始化,即字符串變量詞匯分隔符的初始化。
接下來執行onInitializeInterface,這裡是進行UI初始化的地方,創建以後和配置修改以後,都會調用這個方法。示例在這裡對Keyboard進行了初始化,從XML文件中讀取軟鍵盤信息,封裝進Keyboard對象。
第三個執行的就是onStartInput方法,在這裡,我們被綁定到了客戶端,接收所有關於編輯對象的詳細信息。
第四個執行的方法是onCreateInputView,在用戶輸入的區域要顯示時,這個方法由框架調用,輸入法首次顯示時,或者配置信息改變時,
該方法就會被執行。在該方法中,對inputview進行初始化:讀取布局文件信息,設置onKeyboardActionListener,並初始設置
keyboard。
第五個方法是onCreateCandidatesView,在要顯示候選詞匯的視圖時,由框架調用。和onCreateInputView類似。在這個方式中,對candidateview 進行初始化。
第六個方法,也是最後一個方法,即onStartInputView,正是在這個方法中,將inputview和當前keyboard重新關聯起來。
在上面的六個方法中,onCreateInputView和onCreateCandidatesView兩個方法只有在初始化時才會執行一次,除
非有配置信息發生改變。那麼究竟什麼是配置信息發生改變呢?在看InputMethodService的API文檔時,可以看到有一個方法
onConfigurationChanged,根據文檔解釋,這個方法主要負責配置更改的情況。在示例中,其沒有override這個方法,但是在
android源碼包中的PinyinIME中,有使用這個方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved