查看系统

主要负责在运行的 Fuchsia 系统中组合界面。

界面客户端用于创建、销毁和修改视图的一组 Scenic API 统称为视图系统

查看

View 是 Fuchsia 上界面组织的基本单元。

界面客户端通过与 Scenic 交互来管理 View,Scenic 会代表客户端维护所有 View 并将这些 View 组装成一个一致的 View 树。

每个 View 都会定义一个二维坐标系;界面客户端会将图形内容嵌入到 View 的坐标系中,并根据该坐标系接收输入事件。

界面客户端无法在不先将图形内容嵌入 View 的情况下将图形内容呈现给显示屏。

视口

界面客户端可以通过请求 Scenic 创建一个名为 Viewport 的对象,将其他 View 嵌入到自己的 View 中;此 Viewport 与其“托管”的给定 View 之间存在内在关联。

托管的 View 可以归其他组件中的其他界面客户端所有,通常也确实如此。

视图树

使用 View 和 Viewport 界面,客户端可以协作构建全局分布式内容树,以便 Scenic 调度渲染和查询以进行命中测试。

这个全局视图树称为视图树,Scenic 负责代表界面客户端维护它。

Scenic 呈现的所有内容都封装在 View 中。传送给界面客户端的每个输入事件都与该客户端拥有的视图相关。

查看树状关系以进行显示和输入

Scenic 会将视图树的根视图呈现给显示屏,这意味着根视图的尺寸与显示屏尺寸相同。

Scenic 会根据坐标系的大小和位置,在视图之间划分显示空间。

Scenic 的命中测试系统会根据此分区运行,以便界面客户端根据其 View 的大小和位置接收输入事件。

查看树规则

  • 不允许存在依赖项循环。
  • 每个 View 只能有一个其他 View 作为父级。
  • 每个 View 都只知道自己的坐标系。
  • 每个 View 都可以通过平移、旋转和缩放来控制托管的子视口的坐标系。