android api (82) —— InputConnection [输入法]
前言
本章内容是android.view.inputmethod.InputConnection,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢迎大家访问他的博客:http://www.cnblogs.com/zcmky/,再次感谢"六必治" !期待你加入Android API 中文的翻译,联系我over140@gmail.com。
声明
欢迎转载,但请保留文章原始出处:)
Android中文翻译组:http://code.taobao.org/project/view/404/
正文
一、结构
public interface InputConnection
android.view.inputmethod.InputConnection
间接子类
BaseInputConnection, InputConnectionWrapper
二、概述
InputConnection接口是接收输入的应用程序与InputMethod间的通讯通道。它可以完成以下功能,如读取光标周围的文本,向文本框提交文本,向应用程序提交原始按键事件。
BaseInputConnection的子类应实现这一接口。
三、常量
public static final int GET_EXTRACTED_TEXT_MONITOR
标志,用在getExtractedText(ExtractedTextRequest, int)中,表示提取的文本变化时你想接收到更新。
常量值: 1 (0x00000001)
public static final int GET_TEXT_WITH_STYLES
标志,用在getTextAfterCursor(int, int)和getTextBeforeCursor(int, int)中,表明返回的文本中包含样式。不设置时,你将仅接收原始文本。设置时,你将收到复合的CharSequence,包括文本和样式段。
常量值: 1 (0x00000001)
四、公共方法
public abstract boolean beginBatchEdit ()
通知编辑器你将开始批量编辑操作。编辑器尽量避免向你发送状态更新,直到调用endBatchEdit()为止。
public abstract boolean clearMetaKeyStates (int states)
在指定的输入连接中清除指定的元键(meta key)按下状态。
参数
states 清除的状态,可以是KeyEvent.getMetaState()中的一位或多位结果。
返回值
成功返回true,当连接无效时返回flase。
public abstract boolean commitCompletion (CompletionInfo text)
提交用户的选择,选择先前向 InputMethodSession.displayCompletions()提交的选项中的一个。其结果就像用户从实际UI中做出一样。
参数
text 提交的结果。
返回值
成功返回true,当连接无效时返回flase。
public abstract boolean commitText (CharSequence text, int newCursorPosition)
向文本框提交文本并设置新的光标位置。之前设置的正编辑文字将自动删除。
参数
text 提交的文本。
newCursorPosition 文本范围内新的光标位置。如果大于0,从提交文本末尾-1处计起; = 0,提交文本开始处计起。所以值为1时,光标将定位于你刚刚插入文本之后。注意你不能光标定位于提交文本中,因为编辑器可以修改你提供的文本,所以不必将光标定位在哪。
返回值
成功返回true,当连接无效时返回flase。
public abstract boolean deleteSurroundingText (int leftLength, int rightLength)
删除当前光标前的leftLength个字符,并删除当前光标后的rightLength个字符,不包联想输入(composing)的文字。
参数
leftLength 删除的当前光标之前字符个数。
rightLength 删除的当前光标之后字符个数。
返回值
成功返回true,当连接无效时返回flase。
public abstract boolean endBatchEdit ()
调用endBatchEdit()方法通知编辑器之前开始的批量编辑已完成。
public abstract boolean finishComposingText ()
强制结束文本编辑器,无论联想输入(composing text)是否激活。文本保持不变,移除任何与此文本的编辑样式或其他状态。光标保持不变。
public abstract int getCursorCapsMode (int reqModes)
取得当前光标位置的文本的大小写状态。参见TextUtils.getCapsMode 取得更多信息。此方法在输入连接(connection)无效(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回0。
参数
reqModes 依据TextUtils.getCapsMode的定义取得期望的状态。通过已定义的常数,你可以轻易地传递TextBoxAttribute.contentType到当前。
返回值
返回当前有效的大小写状态。
public abstract ExtractedText getExtractedText (ExtractedTextRequest request, int flags)
获取当前输入连接的编辑器中的当前文本,并监视是否有变化。函数返回当前文本,当文本变化时输入连接可选择性向输入法发送更新。
此方法在输入联接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。
参数
request 描述文本如何返回
flags 控制客户端的附加选项,0或GET_EXTRACTED_TEXT_MONITOR
返回值
返回一个ExtractedText对象描述文本视窗的状态,及所包含的提取文本。
public abstract CharSequence getSelectedText (int flags)
如果有的话取得所选的文本。
此方法在输入连接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。
参数
flags 提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES
返回值
如果有的话返回当前选取文本,如果没有文本被选中返回null。
public abstract CharSequence getTextAfterCursor (int n, int flags)
取得当前光标位置后的 n 个字符文本。
此方法在输入连接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。
参数
n 期望的文本长度
flags 提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES
返回值
返回当前光标后的文本,返回的文本长度可能小于 n
public abstract CharSequence getTextBeforeCursor (int n, int flags)
取得当前光标位置前的 n 个字符文本。
本此方法在输入连接无效(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。
参数
n 期望的文本长度
flags 提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES
返回值
返回当前光标前的文本,返回的文本长度可能小于 n
public abstract boolean performContextMenuAction (int id)
在区域中执行调用上下文菜单动作,其id可能下列之一:selectAll, startSelectingText, stopSelectingText, cut, copy, paste, copyUrl, 或 switchInputMethod。
public abstract boolean performEditorAction (int editorAction)
让编辑器执行一个它可以完成的操作。
参数
editorAction 必须是动作常量EditorInfo.editorType中的一个,如EditorInfo.EDITOR_ACTION_GO。
返回值
成功返回true,如输入连接无效返回false。
public abstract boolean performPrivateCommand (String action, Bundle data)
API从输入法向所连接的编辑器发送私有命令。这可用于提供仅用于特定输入法及其客户端功能的特定域(domain-specific)。注意,因为InputConnection协议是异步的,你无法取回结果或知道客户端是否懂得命令;你可能使用 EditorInfo来确定客户端是否支持某一命令。
参数
action 要执行的命令名称。必须是作用域名,前缀你自己的包名,这样不同的开发者就不会建立让人冲突的命令。
data 命令中的数据
返回值
当命令发送后返回true(无论相关的编辑是否理解它),如输入连接无效返回false。
public abstract boolean reportFullscreenMode (boolean enabled)
由IME调用,通知客户端将在全屏与普通模式间切换。它在 InputMethodService的标准实现中被调用。
public abstract boolean sendKeyEvent (KeyEvent event)
向当前输入连接所附着的进程发送按键事件。事件像普通按键事件一样由当前焦点,通常是提供InputConnection的视图。但由于协议的异步性这一点并不总是这样,焦点可能在事件收到时发生改变。
本方法可用于向应用程序发送按键事件。如屏幕键盘可以用这一方法模拟硬件键盘。标准键盘有三种:数字(12键),预测键盘(20键)和字母(QWERTY)。你可以通过事件的设备码(device id)确定键盘类型。
在你向本API发送的所有按键事件中,你可能希望设置KeyEvent.FLAG_SOFT_KEYBOARD标志,但这一标志不可设置。
参数
event 按键事件
返回值
成功返回true,当输入连接无效返回false。
参见
public abstract boolean setComposingRegion (int start, int end)
将特定区域设为正在编辑文本。以前设置的正在编辑文本自动移除。文本使用默认正在编辑文本样式。(审核注:”composing text”的翻译还需要后期用例子来推测其含义。)
参数
start 正在编辑文本开始的位置
end 正在编辑文本结束的位置。
返回值
成功返回true,当输入联接无效时返回false。
public abstract boolean setComposingText (CharSequence text, int newCursorPosition)
将当前的光标旁正在联想文本(composing text)替代为给定文本,并设置新光标位置。以前设置的正在编辑文本自动移除。(译者注:
InputConnection ic = getCurrentInputConnection();
ic.setComposingText("Composi", 1);
)
参数
text 如必要正在编辑文本有样式。如文本没有附带样式对象,正在编辑文本将应用默认样式。见如何在文本上附加样式{#link android.text.Spanned}。{#link android.text.SpannableString}和{#link android.text.SpannableStringBuilder}是两种界面实现方式。
newCursorPosition 文本范围内新的光标位置。如果大于0,从提交文本末尾-1处计起; = 0,提交文本开始处计起。所以值为1时,光标将定位于你刚刚插入文本之后。注意你不能光标定位于提交文本中,因为编辑器可以修改你提供的文本,所以不必将光标定位在哪。
返回值
成功返回true,当输入联接无效时返回false。
public abstract boolean setSelection (int start, int end)
设置文本编辑器的选定文本。设置到当前光标时,开始与结束取相同值。
返回值
成功返回true,当输入联接无效时返回false。
转载:http://www.cnblogs.com/over140/archive/2011/01/06/1927059.html
Android组件化开发(七)--从零开始教你分析项目需求并实现 前面几篇文章我们封装了几个组件化功能组件:包括:**网络请求组件,图片加载请求组件,应用保活组件,音乐播放组件封装。** 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
Android组件化开发(六)-- 短视频播放组件封装 前面几篇文章我们封装了几个组件化功能组件: 包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`,`音乐播放组件封装`。 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
Android组件化开发(五)--完整版音乐播放组件的封装 前面几篇系列文章我们讲解了`组件化开发`中几个常用功能组件的开发,包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`。今天我们来封装一个`音乐播放组件`。
Android组件化开发(四)--进程保活组件的封装 前面文章我们封装了网络请求组件`lib_nework`和图片加载组件`lib_image_loader`,今天我们来封装一个进程保活的组件`lib_pull_alive`
Android组件化开发(二)--网络请求组件封装 前面一篇文章我们讲解了`maven私服`的搭建,maven私服在`组件化框架`中有一个很重要的地位就是可以将我们的`lib`库放到局域网中,供公司其他开发者使用,实现类库的分享。 下面是这个系列准备实现的一个`组件化实战项目框架`:
相关文章
- Android telephony_android获取真实时间
- Android浏览器多窗口webview界面截屏心得「建议收藏」
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android面试题2022
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android进阶之了解Android系统与开机过程
- android 模拟器 haxm,Android模拟器不使用HAXM
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- android短信验证码方案,Android开发之属于你的短信验证码(一)
- android短信验证码代码,Android短信验证码自动填写实现代码
- Android Q Beta 4 来啦!公开 API 也已定稿!
- 抖音API接口_抖音榜单数据api接口
- 个人号微信api接口开发_API接口授权系统php源码
- Could not find class 'android.support.v4.widget.DrawerLayout$1'
- 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
- 【错误记录】Android Studio 编译报错 ( Invalid main APK outputs : EarlySyncBuildOutput )
- 【错误记录】编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )
- 【错误记录】编译 Android 版本的 ijkplayer 报错 ( ./init-android.sh: 第 37 行: cd: android/contrib/: 没有那个文件或目录 )
- win10 编译 Android ffmpeg详解手机开发
- 眼萌(Android) v1.0体验版发布:让您用最舒服的姿势抢红包
- Github iOS 和 Android 客户端正式发布
- 简易Redis操作开启通用API之旅(redis 通用api)
- Android图片翻转动画简易实现代码
- Android加载对话框同时异步执行实现方法