android.view.inputmethod

接口

  • InputConnection
  • InputMethod
  • InputMethod.SessionCallback
  • InputMethodSession
  • InputMethodSession.EventCallback

  • BaseInputConnection
  • CompletionInfo
  • EditorInfo
  • ExtractedText
  • ExtractedTextRequest
  • InputBinding
  • InputConnectionWrapper
  • InputMethodInfo
  • InputMethodManager

inputmethod

结构

继承关系

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 接口实际上分为两部分:

  1. 接口是输入法的最高级接口,提供所有的访问,只有系统能访问(需要 BIND_INPUT_METHOD 权限)。
  2. 另外调用方法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  与输入法绑定的应用程序窗口信息。

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)需要输入的属性

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)信息。

public abstract void unbindInput ()

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

时间: 2024-10-10 02:14:44

android.view.inputmethod的相关文章

关于 android.view.WindowLeaked: 窗体泄露

一.问题 E/WindowManager: android.view.WindowLeaked: Activity com.jeany.demo.MainActivity has leaked window [email protected][] that was originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:485) at android.view.WindowManagerGlobal

android View 详解

android.View.View(即View)类是以矩形的方式显示在屏幕上,View是用户界面控件的基础.View的继承层次关系如下图: 可以看到所有的界面控件都是View的子类.简单证实一下,每当你用findViewByIds(R.id.xx)时总要将其强转,因为该方法返回的是一个View实例,有木有!!!其中不得不提View的subClass ViewGroup.Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的.所有View的子类成为"Widget&

Android View体系(二)实现View滑动的六种方法

相关文章: Android View体系(一)视图坐标系 1.View的滑动简介 View的滑动是Android实现自定义控件的基础,同时在开发中我们也难免会遇到View的滑动的处理.其实不管是那种滑动的方式基本思想都是类似的:当触摸事件传到View时,系统记下触摸点的坐标,手指移动时系统记下移动后的触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标. 实现View滑动有很多种方法,这篇文章主要讲解六种滑动的方法,分别是:layout().offsetLeftAndRight()与offs

Android View 事件分发机制 源码解析 (上)

一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~ 首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个MyButton继承Button,然后把跟事件传播有关的方法进行复写,然后添加上日志~ MyButton [java] view plain copy package com.example.zhy_event03; import android.content.Context; import andr

Android View 触摸事件传递机制

PS:以现在的眼光看以前写的博客感觉写的很烂,或许或一段时间再看现在的博客会有同样的感觉.所以每时每刻都去学习,去发现和理解新的东西. 引言 由于之前写的一篇关于Android事件传递顺序的博客质量太差,可能是理解不到位的原因,故最近又花了许多时间再次去看Android源码,看完之后有了新的理解,所以打算重新整理这篇博客.理解Android触摸事件传递机制有助于日后的开发以及自定义一些手势效果等.注意:这篇博客是基于Android2.0源码来分析的,不管老版本还是新版本的Android,其内部触

java.lang.NoSuchMethodException: [class android.view.View]

05-24 11:38:35.884: E/AndroidRuntime(1819): FATAL EXCEPTION: main05-24 11:38:35.884: E/AndroidRuntime(1819): Process: com.example.activitytest, PID: 181905-24 11:38:35.884: E/AndroidRuntime(1819): java.lang.IllegalStateException: Could not find a met

Android View measure (三) 常用方法

ViewGroup.measureChildren() ViewGroup.measureChild() ViewGroup.measureChildWithMargins() /** * Ask one of the children of this view to measure itself, taking into * account both the MeasureSpec requirements for this view and its padding * and margins

(android学习笔记)Android View

Android View类: 1.所有的Android组件均是View的子类. 2.所有的组件均可以进行两种配置,一是通过方法进行配置.二是通过XML进行配置. TextView类: 1.对于文本组件而言主要的目的是静态的显示一些文字,类似于标签的功能. 2.其是android.widget.TextView类,是android.view.View类的直接子类. 3.插入超链接的方法: 1)在XML文件中的TextView组件配置中写:android:autoLink="all" 会自

Android View框架总结(八)ViewGroup事件分发机制

请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上面的EventButton继承TextView的话,按下抬起,会有一个现象,我可以告诉大家现象:就是只有dispatchTouchEvent ACTION_DOWN,onTouch ACTION_DOWN,onTouchEvent ACTION_DOWN这三个,你移动,或者抬起,是没有MOVE,或者