Android 中文api (81)——InputMethod [IME]

來源:互聯網
上載者:User

前言

  本章內容是android.view.inputmethod.InputMethod,為IME相關章節,版本為Android 2.3 r1,翻譯來自"六必治",歡迎大家訪問他的部落格:http://www.cnblogs.com/zcmky/,再次感謝"六必治" !期待你加入Android API 中文的翻譯,聯絡我over140@gmail.com。

 

聲明

  歡迎轉載,但請保留文章原始出處:)

    部落格園:http://www.cnblogs.com/

    Android中文翻譯組:http://code.taobao.org/project/view/404/

 

本文

  一、結構

public interface InputMethod extends Object

        

android.view.inputmethod.InputMethod

 

間接子類

AbstractInputMethodService.AbstractInputMethodImpl, InputMethodService.InputMethodImpl

 

  二、類概述

  InputMethod介面代表了IME,它可產生按鍵事件,產生文本,如數字,email地址,CJK字元,其它語言字元等等。在處理輸入事件時,將文本返回至需要文本輸入的應用程式。InputMethodManager可得到更多關於架構的資訊。

  應用程式通常不使用這個介面本身,而是依靠TextView 和 EditText提供的標準互動。

  IME實現通常為InputMethodService及其子類的派生。在實現IME時,包含它的服務控制項必須提供SERVICE_META_DATA中繼資料欄位,該中繼資料欄位聯結至一包含IME細節的XML資源。所有IME也必定要求用戶端包含BIND_INPUT_METHOD以便與服務控制項互動。如果不這樣,系統將無法使用IME,因其無法確認是否完整。

    InputMethod介面實際上分為兩部分:介面是IME的最進階介面,提供所有的訪問,只有系統能訪問(需要BIND_INPUT_METHOD許可權)。另外調用方法createSession(android.view.inputmethod.InputMethod.SessionCallback)可執行個體化InputMethodSession副介面,用於與用戶端通訊。

 

  三、內部類

         interface          InputMethod.SessionCallback

 

  四、常量

  public static final String SERVICE_INTERFACE

  介面名字,實現IME的服務應說明它支援IME,也就是它將用於意向過濾器(intent filter)。服務還需要BIND_INPUT_METHOD許可權,這樣應用程式不會濫用它。

  常量值: "android.view.InputMethod"

 

  public static final String SERVICE_META_DATA

  IME通過此名字發布其自身資訊。此中繼資料必須引用一個包含< input-method>標籤的XML資源。

  常量值: "android.view.im"

 

  public static final int SHOW_EXPLICIT

  用於showSoftInput(int, ResultReceiver)的標誌:它表示使用者顯式地要求其(軟鍵盤)顯示。如果沒有設定,系統決定可能是一個好主意,顯示IME在使用者介面上的導航操作。

  常量值: 1 (0x00000001)

 

  public static final int SHOW_FORCED

  標誌用於showSoftInput(int, ResultReceiver):表明使用者強制其(軟鍵盤)顯示。如設定,IME保持可見直至使用者在UI上取消。

  常量值: 2 (0x00000002)

 

  五、公用方法

  public abstract void attachToken (IBinder token)

  IME建立後首先被調用,它提供一個與系統服務會話的唯一令牌。它需要通過服務識別IME從而驗證其操作。令牌不能傳遞給應用程式,因其取得了應用程式不應得到的特殊許可權。

  注意:為避免惡意用戶端傷害,你應只接收第一個令牌。其後可能來自用戶端。

 

  public abstract void bindInput (InputBinding binding)

  將IME與新的應用程式環境綁定,以便稍後啟動、停止輸入處理。通常在應用程式第一次啟用IME時調用此方法。

  參數

  binding    與IME綁定的應用程式視窗資訊。

  參見

                        InputBinding

                   unbindInput()

 

  public abstract void createSession (InputMethod.SessionCallback callback)

  建立一個新的InputMethodSession,它可處理客戶應用程式與IME的互動。你可以隨後用revokeSession(InputMethodSession)銷毀會話,這樣就不會有任何用戶端使用它。

  參數

  callback 新建立會話調用的介面。

 

  public abstract void hideSoftInput (int flags, ResultReceiver resultReceiver)

  將IME的軟鍵盤(soft input)部分對使用者隱藏。

  參數

  flags        顯示要求的附加資訊。當前總是0。

  resultReceiver  向要求顯示的用戶端通知結果。其結果可能為InputMethodManager.RESULT_UNCHANGED_SHOWN, InputMethodManager.RESULT_UNCHANGED_HIDDEN,InputMethodManager.RESULT_SHOWN, 或 InputMethodManager.RESULT_HIDDEN

 

  public abstract void restartInput (InputConnection inputConnection, EditorInfo attribute)

  IME需重設時調用此方法。

  通常輸入焦點從一個文字框移至另一個時調用此方法。

  參數

  inputConnection     可選,確定與文字框通訊的輸入通訊通道;如為空白,你使用通常綁定的輸入通訊通道。

  attribute          文字框(通常是EditText)需要輸入的屬性

  參見

                            EditorInfo

 

  public abstract void revokeSession (InputMethodSession session)

  關閉並銷毀先前由createSession(android.view.inputmethod.InputMethod.SessionCallback)建立的會話。調用後,會話不再有效,對其的調用將失敗。

  參數

  session  先前由SessionCallback.sessionCreated()提供的InputMethodSession將被吊銷。

 

  public abstract void setSessionEnabled (InputMethodSession session, boolean enabled).

  控制某特定IME會話是否啟用。

  參數

  session  先前由SessionCallback.sessionCreated()提供的InputMethodSession將改變。

 

  public abstract void showSoftInput (int flags, ResultReceiver resultReceiver)

  將IME的軟鍵盤(soft input)部分對使用者顯示。

  參數

  flags  提供顯示要求的附加資訊。當前為0或設定SHOW_EXPLICIT 位。

  resultReceiver  向要求顯示的用戶端通知結果。其結果可能為InputMethodManager.RESULT_UNCHANGED_SHOWN, InputMethodManager.RESULT_UNCHANGED_HIDDEN,InputMethodManager.RESULT_SHOWN, 或 InputMethodManager.RESULT_HIDDEN

 

  public abstract void startInput (InputConnection inputConnection, EditorInfo info)

  應用程式開始接收文本,IME準備好為應用程式處理接收事件並返迴文本時調用本方法。

  參數

  inputConnection     可選,確定與文字框通訊的輸入通訊通道;如為空白,你使用通常綁定的輸入通訊通道。

  info  需要輸入的文字框(通常是EditText)資訊。

  參見

                        EditorInfo

 

  public abstract void unbindInput ()

          解除與應用程式的綁定,先前由bindInput(InputBinding)設定的資訊對當前IME無效時調用。

通常在應用程式變為非前台調用。

 

  六、補充

 文章精選

在Android中建立一種新的IME(Creating an Input Method)

Android input method panel control

通過一個SoftKeyboard例子(可以看看部落格裡的其他幾篇文章)

Android IMF的一處瑕疵

Android IMFIME總結

為 Android 平台開發一個IME

Android IMF學習筆記一

Android Framework系列之IMF(一)

Android Framework系列之IMF(二)

Android Framework系列之IMF(三)

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.