Expand description
提供一些类,这些类公开处理屏幕布局和与用户交互的基本用户界面类。
Modules§
- 视图和输入法(如软键盘)之间交互的框架类。
Structs§
- 上下文包装器允许您修改或替换包装上下文的主题。
- 提供有关逻辑显示器的大小和密度的信息。显示区域有两种不同的描述方式。应用程序显示区域指定可能包含应用程序窗口的显示器部分,不包括系统装饰。应用程序显示区域可能小于实际显示区域,因为系统减去了状态栏等装饰元素所需的空间。 使用 WindowMetrics.getBounds() 查询应用程序窗口边界。实际显示区域指定应用程序在当前系统状态下可访问的显示器部分。在某些情况下,实际显示区域可能小于显示器的物理尺寸。使用 WindowManager.getCurrentWindowMetrics() 确定活动窗口的当前大小。 与 UI 相关的工作(例如选择 UI 布局)应依赖于 WindowMetrics.getBounds()。有关详细信息,请参阅 getRealSize / getRealMetrics。逻辑显示器不一定代表特定的物理显示设备,例如内部显示器或外部显示器。 根据当前连接的设备以及是否启用镜像,逻辑显示器的内容可能会显示在一个或多个物理显示器上。
- 输入事件的通用基类。
- 用于报告按键和按钮事件的对象。每次按键都由一系列按键事件描述。按键以 ACTION_DOWN 按键事件开始。如果按键保持的时间足够长,以至于重复,则初始按下之后是其他按键事件,其中 ACTION_DOWN 和非零 getRepeatCount() 值。最后一个按键事件是按键弹起的 ACTION_UP。 如果取消按键,则按键弹起事件将设置 FLAG_CANCELED 标志。按键事件通常伴随着按键代码 (getKeyCode())、扫描代码 (getScanCode()) 和元状态 (getMetaState())。按键代码常量在此类中定义。扫描代码常量是从操作系统获得的原始设备特定代码,因此除非使用 KeyCharacterMap 进行解释,否则通常对应用程序没有意义。 元状态描述按键修饰符(如 META_SHIFT_ON 或 META_ALT_ON)的按下状态。按键代码通常与输入设备上的各个按键一一对应。许多按键和按键组合在不同的输入设备上具有完全不同的功能,因此在解释它们时必须小心谨慎。将按键映射到字符时,请始终使用与输入设备关联的 KeyCharacterMap。 请注意,可能同时有多个按键输入设备处于活动状态,并且每个设备都有自己的按键字符映射。由于软输入法可以使用多种创新的文本输入方式,因此无法保证软键盘上的任何按键都会生成按键事件:这由 IME 自行决定,实际上不鼓励发送此类事件。您永远不应该依赖于接收软输入法上任何按键的 KeyEvent。 特别是,默认软件键盘永远不会向任何针对 Jelly Bean 或更高版本的应用程序发送任何按键事件,并且只会向针对 Ice Cream Sandwich 或更早版本的应用程序发送某些删除和返回键按下事件。请注意,其他软件输入法可能永远不会发送按键事件,无论版本如何。考虑使用编辑器操作,如 android.view.inputmethod.EditorInfo。 如果您需要与软件键盘进行特定交互,则可以使用 IME_ACTION_DONE,因为它可以让用户更清楚地了解您的应用程序如何对按键做出反应。与 IME 交互时,框架可能会使用特殊操作 ACTION_MULTIPLE 传递按键事件,该操作指定单个重复的按键代码或要插入的字符序列。一般来说,框架无法保证它传递给视图的按键事件始终构成完整的按键序列,因为某些事件可能会在传递之前被包含视图删除或修改。视图实现应该准备好处理 FLAG_CANCELED,并且应该容忍异常情况,例如在没有先收到上一次按键的 ACTION_UP 的情况下收到新的 ACTION_DOWN。 有关不同类型的输入设备和源如何表示按键和按钮的更多信息,请参阅 InputDevice。
- 处理由屏幕合成器管理的原始缓冲区。 Surface 通常由图像缓冲区的使用者(例如 SurfaceTexture、android.media.MediaRecorder 或 android.renderscript.Allocation)创建或从其创建,并交给某种生产者(例如 OpenGL、MediaPlayer 或 CameraDevice)进行绘制。 注意:Surface 就像与其关联的使用者的弱引用。它本身不会阻止其父级使用者被回收。
- 此类代表用户界面组件的基本构建块。View 占据屏幕上的矩形区域,负责绘制和事件处理。View 是小部件的基类,用于创建交互式 UI 组件(按钮、文本字段等)。ViewGroup 子类是布局的基类,布局是不可见的容器,用于容纳其他 View(或其他 ViewGroup)并定义其布局属性。 开发人员指南 有关使用此类开发应用程序用户界面的信息,请阅读用户界面开发人员指南。 使用视图窗口中的所有视图都排列在一棵树中。您可以从代码中添加视图,也可以通过在一个或多个 XML 布局文件中指定视图树来添加视图。有许多专门的视图子类,它们充当控件或能够显示文本、图像或其他内容。创建视图树后,通常您可能希望执行以下几种常见操作:
- ViewGroup 是一种特殊视图,可以包含其他视图(称为子视图)。视图组是布局和视图容器的基类。 此类还定义了 ViewGroup.LayoutParams 类,该类用作布局参数的基类。另请参阅 ViewGroup.LayoutParams 以了解布局属性。
- 视图使用 LayoutParams 来告诉其父级它们希望如何布局。请参阅 ViewGroup 布局属性,了解此类支持的所有子视图属性的列表。 基本 LayoutParams 类仅描述视图希望的宽度和高度。对于每个维度,它可以指定以下之一: FILL_PARENT(在 API 级别 8 及更高版本中重命名为 MATCH_PARENT),这意味着视图希望与其父级一样大(减去填充) WRAP_CONTENT,这意味着视图希望足够大以包含其内容(加上填充)
- 支持边距的布局的每个子视图布局信息。请参阅 ViewGroup 边距布局属性,查看此类支持的所有子视图属性的列表。
- 顶级窗口外观和行为策略的抽象基类。该类的实例应用于添加到窗口管理器的顶级视图。 它提供标准 UI 策略,例如背景、标题区域、默认按键处理等。框架将代表应用程序实例化该类的实现。
Traits§
- 持有显示表面的人员的抽象接口。允许您控制表面大小和格式、编辑表面中的像素以及监视表面的变化。 此接口通常可通过 SurfaceView 类获得。当从运行其 SurfaceView 的线程以外的线程使用此接口时,您需要仔细阅读 lockCanvas 和 Callback.surfaceCreated() 方法。
- 客户端可以实现此接口来接收有关表面更改的信息。与 SurfaceView 一起使用时,被保留的 Surface 仅在调用 surfaceCreated(SurfaceHolder) 和 surfaceDestroyed(SurfaceHolder) 之间可用。 回调使用 SurfaceHolder.addCallback 方法设置。
- 客户端可以实现此接口来接收有关表面更改的信息。与 SurfaceView 一起使用时,被保留的 Surface 仅在调用 surfaceCreated(SurfaceHolder) 和 surfaceDestroyed(SurfaceHolder) 之间可用。 回调使用 SurfaceHolder.addCallback 方法设置。
- 接口允许您向 Activity 添加和删除子视图。要获取此类的实例,请调用 Context.getSystemService()。
- 定义视图父类的职责。这是视图想要与其父类交互时看到的 API。
- 当视图被点击时调用的回调的接口定义。
- 当硬件按键事件被分派到此视图时,要调用的回调的接口定义。回调将在按键事件被提供给视图之前被调用。 这仅适用于硬件键盘;软件输入法没有义务触发此侦听器。
- 当视图被点击并保持时调用的回调的接口定义。
- 应用用于与窗口管理器通信的接口。每个窗口管理器实例都绑定到一个 Display。要获取与显示器关联的 WindowManager,请调用 Context.createWindowContext(Display, int, Bundle) 以获取显示器的 UI 上下文,然后在 UI 上下文上调用 Context.getSystemService(String) 或 Context.getSystemService(Class)。 在特定显示器上显示窗口的最简单方法是创建一个 Presentation,它会自动获取显示器的 WindowManager 和上下文。
Functions§
- 测试android.view