← 返回首页

范围:框架修改与内部行为排查。文档按依赖顺序排列,依次为概述与元素系统、布局与交互、设计决策与实现模式。

文档导航

文档内容适合
项目概述项目定位、核心特性、源码结构所有读者
元素系统Element 基类、自界定泛型、pressFlags所有读者
布局系统惰性布局、坐标系统、OverflowMode、容器所有读者
交互引擎InteractionManager、H0/H1/L1/H3/L3 碰撞检测、分发优先级深入理解输入
覆盖层系统OverlayTree 多根森林、OverlayManager、模态语义深入理解浮动元素
生命周期系统UiTickDriver 固定步长、TickWalker 统一遍历、Element.tick改每帧状态驱动
测试源集testmod 自建源集、classpath-groups、DevGallery 页添加组件后手工核对
根树与层级系统所有权模型、渲染/输入流水线理解整体架构
动画系统Animator、缓动函数添加动画效果
工具类Colors、UIRenderUtil、TextDrawUtil颜色操作
自绘扩展VertexPainter、CustomElementRenderState、CustomDrawUtil、GradientPainter画 fill 与 text 之外的东西
关键设计决策7 项核心设计决策及其理由架构评审
如何使用快速上手、组件示例、布局示例快速入门
常见实现模式添加组件、自定义布局、扩展碰撞检测扩展框架
常见问题内部实现原理、设计选择疑难解答

核心架构概览

Screen(单一所有者)
├── root: LayoutElement        # 元素树
├── overlays: OverlayManager   # 覆盖层系统
└── interactionManager: InteractionManager  # 交互管理器

数据流:

用户输入 → Screen 转发 → InteractionManager 路由
                             ↓
                    覆盖层分发 → 根元素树

渲染: Tooltip.cursor → root.extractRenderState → overlays.renderOverlay

核心包(均位于 xianfish.fluentui.client.ui 下):

包用途
element基类: Element, LayoutElement, TooltippingElement, FocusableElement, Focusable, KeyboardReceiver, Margin
element/layout布局容器: StackPanel, Canvas, EntryRow + 枚举
interactionInteractionManager, Hit
overlayOverlayManager, OverlayTree
tickUiTickDriver, TickWalker
component15 个 UI 组件
animationAnimator, Easing
utilColors, UIRenderUtil, TextDrawUtil
renderVertexPainter, CustomElementRenderState, CustomDrawUtil, GradientPainter