編輯: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中,有使用這個方法。
前言: 這個效果實現的原作者是國外一位大神。我在其基礎上測試,以及在代碼上加了不少注釋,以及局部修改。後面我有根據漫天飛舞雪花,實現下雨天場景的效
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩