Android 中文api (81)——InputMethod [输入法]

简介:

 

正文

  一、结构

public interface InputMethod extends Object

        

android.view.inputmethod.InputMethod

 

间接子类

AbstractInputMethodService.AbstractInputMethodImplInputMethodService.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)设定的信息对当前输入法无效时调用。

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


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582435,如需转载请自行联系原作者
相关文章
|
Android开发
Android InputMethod(输入法)
基于窗体打开输入法 /** * 基于窗体打开输入法 */ @OnClick(R.id.btn_open_window) public void onOpenWindow(){ InputMethodManager inp...
855 0
|
4天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
27天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
103 0
|
1月前
|
设计模式 人工智能 开发工具
安卓应用开发:构建未来移动体验
【2月更文挑战第17天】 随着智能手机的普及和移动互联网技术的不断进步,安卓应用开发已成为一个热门领域。本文将深入探讨安卓平台的应用开发流程、关键技术以及未来发展趋势。通过分析安卓系统的架构、开发工具和框架,本文旨在为开发者提供全面的技术指导,帮助他们构建高效、创新的移动应用,以满足不断变化的市场需求。
18 1
|
1天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
18天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
21天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。