职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 360|回复: 2

Android 中文api (81)——InputMethod

[复制链接]
jinchang 发表于 2011-8-10 09:33 | 显示全部楼层 |阅读模式
前言
  本章内容是android.view.inputmethod.InputMethod,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢迎大家访问他的博客:http://www.cnblogs.com/zcmky/,再次感谢"六必治" !期待你加入Android API 中文的翻译,联系我over140@gmail.com。

声明
  欢迎转载,但请保留文章原始出处:)
    JavaEye社区:http://www.iteye.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(三)

hxy 发表于 2011-8-10 09:34 | 显示全部楼层
学习一下。

broken 发表于 2011-8-10 09:34 | 显示全部楼层
回头慢慢看,拿人钱财替人消灾,不顶说不过去啊
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-5 14:27 , Processed in 0.136497 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表