前言html
本章內容是android.view.inputmethod.InputMethod,爲輸入法相關章節,版本爲Android 2.3 r1,翻譯來自"六必治",歡迎你們訪問他的博客:http://www.cnblogs.com/zcmky/,再次感謝"六必治" !期待你加入Android API 中文的翻譯,聯繫我over140@gmail.com。 java
聲明android
歡迎轉載,但請保留文章原始出處:) session
博客園:http://www.cnblogs.com/架構
Android中文翻譯組:http://code.taobao.org/project/view/404/ ide
正文spa
1、結構.net
public interface InputMethod extends Object翻譯
android.view.inputmethod.InputMethodrest
間接子類
AbstractInputMethodService.AbstractInputMethodImpl, InputMethodService.InputMethodImpl
2、類概述
InputMethod接口表明了輸入法,它可生成按鍵事件,生成文本,如數字,email地址,CJK字符,其它語言字符等等。在處理輸入事件時,將文本返回至須要文本輸入的應用程序。InputMethodManager
可獲得更多關於架構的信息。
應用程序一般不使用這個接口自己,而是依靠TextView 和 EditText提供的標準交互。
輸入法實現一般爲InputMethodService
及其子類的派生。在實現輸入法時,包含它的服務控件必須提供SERVICE_META_DATA
元數據字段,該元數據字段聯接至一包含輸入法細節的XML資源。全部輸入法也一定要求客戶端包含BIND_INPUT_METHOD
以便與服務控件交互。若是不這樣,系統將沒法使用輸入法,因其沒法確認是否完整。
createSession(android.view.inputmethod.InputMethod.SessionCallback)
可實例化
InputMethodSession
副接口,用於與客戶端通信。
3、內部類
interface InputMethod.SessionCallback
4、常量
public static final String SERVICE_INTERFACE
接口名字,實現輸入法的服務應說明它支持輸入法,也就是它將用於意向過濾器(intent filter)。服務還須要BIND_INPUT_METHOD
權限,這樣應用程序不會濫用它。
常量值: "android.view.InputMethod"
public static final String SERVICE_META_DATA
輸入法經過此名字發佈其自身信息。此元數據必須引用一個包含< input-method
>標籤的XML資源。
常量值: "android.view.im"
public static final int SHOW_EXPLICIT
用於showSoftInput(int, ResultReceiver)
的標誌:它表示用戶顯式地要求其(軟鍵盤)顯示。若是沒有設置,系統決定多是一個好主意,顯示輸入法在用戶界面上的導航操做。
常量值: 1 (0x00000001)
public static final int SHOW_FORCED
標誌用於showSoftInput(int, ResultReceiver)
:代表用戶強制其(軟鍵盤)顯示。如設置,輸入法保持可見直至用戶在UI上取消。
常量值: 2 (0x00000002)
5、公共方法
public abstract void attachToken (IBinder token)
輸入法建立後首先被調用,它提供一個與系統服務會話的惟一令牌。它須要經過服務識別輸入法從而驗證其操做。令牌不能傳遞給應用程序,因其取得了應用程序不該獲得的特殊權限。
注意:爲避免惡意客戶端傷害,你應只接收第一個令牌。其後可能來自客戶端。
public abstract void bindInput (InputBinding binding)
將輸入法與新的應用程序環境綁定,以便稍後啓動、中止輸入處理。一般在應用程序第一次啓用輸入法時調用此方法。
參數
binding 與輸入法綁定的應用程序窗口信息。
參見
public abstract void createSession (InputMethod.SessionCallback callback)
建立一個新的InputMethodSession,它可處理客戶應用程序與輸入法的交互。你能夠隨後用revokeSession(InputMethodSession)
銷燬會話,這樣就不會有任何客戶端使用它。
參數
callback 新建立會話調用的接口。
public abstract void hideSoftInput (int flags, ResultReceiver resultReceiver)
將輸入法的軟鍵盤(soft input)部分對用戶隱藏。
參數
flags 顯示要求的附加信息。當前老是。
resultReceiver 向要求顯示的客戶端通知結果。其結果可能爲InputMethodManager.RESULT_UNCHANGED_SHOWN, InputMethodManager.RESULT_UNCHANGED_HIDDEN,InputMethodManager.RESULT_SHOWN, 或 InputMethodManager.RESULT_HIDDEN
public abstract void restartInput (InputConnection inputConnection, EditorInfo attribute)
輸入法需重置時調用此方法。
一般輸入焦點從一個文本框移至另外一個時調用此方法。
參數
inputConnection 可選,肯定與文本框通信的輸入通信通道;如爲空,你使用一般綁定的輸入通信通道。
attribute 文本框(一般是EditText)須要輸入的屬性
參見
public abstract void revokeSession (InputMethodSession session)
關閉並銷燬先前由createSession(android.view.inputmethod.InputMethod.SessionCallback)
建立的會話。調用後,會話再也不有效,對其的調用將失敗。
參數
session 先前由SessionCallback.sessionCreated()提供的InputMethodSession將被吊銷。
public abstract void setSessionEnabled (InputMethodSession session, boolean enabled).
控制某特定輸入法會話是否激活。
參數
session 先前由SessionCallback.sessionCreated()提供的InputMethodSession將改變。
public abstract void showSoftInput (int flags, ResultReceiver resultReceiver)
將輸入法的軟鍵盤(soft input)部分對用戶顯示。
參數
flags 提供顯示要求的附加信息。當前爲或設置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)
應用程序開始接收文本,輸入法準備好爲應用程序處理接收事件並返回文本時調用本方法。
參數
inputConnection 可選,肯定與文本框通信的輸入通信通道;如爲空,你使用一般綁定的輸入通信通道。
info 須要輸入的文本框(一般是EditText)信息。
參見
public abstract void unbindInput ()
解除與應用程序的綁定,先前由bindInput(InputBinding)
設定的信息對當前輸入法無效時調用。