界面客户端用于创建、销毁和修改视图的一组 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 都可以通过平移、旋转和缩放来控制托管的子视口的坐标系。