前言

  本章内容是android.view.inputmethod.InputMethod,为输入法相关章节,版本为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接口代表了输入法,它可生成按键事件,生成文本,如数字,email地址,CJK字符,其它语言字符等等。在处理输入事件时,将文本返回至需要文本输入的应用程序。InputMethodManager可得到更多关于架构的信息。

  应用程序通常不使用这个接口本身,而是依靠TextView EditText提供的标准交互。

  输入法实现通常为InputMethodService及其子类的派生。在实现输入法时,包含它的服务控件必须提供SERVICE_META_DATA元数据字段,该元数据字段联接至一包含输入法细节的XML资源。所有输入法也必定要求客户端包含BIND_INPUT_METHOD以便与服务控件交互。如果不这样,系统将无法使用输入法,因其无法确认是否完整。

     InputMethod 接口实际上分为两部分:接口是输入法的最高级接口,提供所有的访问,只有系统能访问(需要 BIND_INPUT_METHOD 权限)。另外调用方法 createSession(android.view.inputmethod.InputMethod.SessionCallback) 可实例化 InputMethodSession 副接口,用于与客户端通讯。

  三、内部类

interface InputMethod.SessionCallback

  四、常量

  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)

  五、公共方法

  public abstract void attachToken (IBinder token)

  输入法创建后首先被调用,它提供一个与系统服务会话的唯一令牌。它需要通过服务识别输入法从而验证其操作。令牌不能传递给应用程序,因其取得了应用程序不应得到的特殊权限。

  注意:为避免恶意客户端伤害,你应只接收第一个令牌。其后可能来自客户端。

  public abstract void bindInput (InputBinding binding)

  将输入法与新的应用程序环境绑定,以便稍后启动、停止输入处理。通常在应用程序第一次启用输入法时调用此方法。

  参数

  binding 与输入法绑定的应用程序窗口信息。

  参见

InputBinding

unbindInput()

  public abstract void createSession (InputMethod.SessionCallback callback)

  创建一个新的InputMethodSession,它可处理客户应用程序与输入法的交互。你可以随后用revokeSession(InputMethodSession)销毁会话,这样就不会有任何客户端使用它。

  参数

  callback 新创建会话调用的接口。

  public abstract void hideSoftInput (int flags, ResultReceiver resultReceiver)

  将输入法的软键盘(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)

  输入法需重置时调用此方法。

  通常输入焦点从一个文本框移至另一个时调用此方法。

  参数

  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).

  控制某特定输入法会话是否激活。

  参数

  session 先前由SessionCallback.sessionCreated()提供的InputMethodSession将改变。

  public abstract void showSoftInput (int flags, ResultReceiver resultReceiver)

  将输入法的软键盘(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)

  应用程序开始接收文本,输入法准备好为应用程序处理接收事件并返回文本时调用本方法。

  参数

  inputConnection 可选,确定与文本框通讯的输入通讯通道;如为空,你使用通常绑定的输入通讯通道。

  info 需要输入的文本框(通常是EditText)信息。

  参见

EditorInfo

  public abstract void unbindInput ()

 解除与应用程序的绑定,先前由bindInput(InputBinding)设定的信息对当前输入法无效时调用。

通常在应用程序变为非前台调用。

  六、补充

 文章精选

Android中创建一种新的输入法(Creating an Input Method

Android input method panel control

过一个SoftKeyboard例子(可以看看博客里的其他几篇文章)

Android IMF的一处瑕疵

Android IMF输入法总结

Android 平台开发一个输入法

Android IMF学习笔记一

Android Framework系列之IMF(一)

Android Framework系列IMF(二)

Android Framework系列之IMF(三)

更多相关文章

  1. Android一级目录介绍
  2. Android(安卓)应用程序之间数据共享—ContentProvider
  3. 如何使Android应用程序获取系统权限
  4. ANDROID的MANIFEST.XML文件字段解析
  5. Android(安卓)display架构分析(二)
  6. Android应用程序框架
  7. android底层开发
  8. Android(安卓)UI Operation in Thread
  9. android api (83) —— InputMethodSession [输入法]

随机推荐

  1. android那些事——android的成长
  2. android 设置全屏方法2
  3. 【Android】Android(安卓)4.0 无法接收开
  4. Android(安卓)输入法框架 (1)
  5. Android(安卓)Studio Android(安卓)UI控
  6. Android渗透测试Android渗透测试入门教程
  7. android:drawSelectorOnTop含义
  8. 分享10个Android游戏源码,要的赶紧来哈
  9. 今天开始记录自学android的历程
  10. Android代码混淆的那些事