PixelUI Architecture / 架构概览
这页不讲每个类的所有成员,只给出最重要的心智模型。
![]()
提供给UI时间更新和输入事件,renderer() 在中间统一推进 manager 并合成画面。最下方展示了输入优先级:某一层消耗事件后,不再继续传递。
PixelUI
PixelUI 是统一入口,持有或连接:
- U8g2 显示对象;
UiDeadlineScheduler,以及注册到它的离散时间状态;AnimationManager和PopupManager;ViewManager、CoroutineScheduler和FocusManager;- 平台刷新、渲染唤醒和输入回调;
- 内部毫秒时间和 fade 状态。
时间更新
时间先进入 PixelUI,process() 推进到期状态并标记 dirty,renderer() 再合成需要的帧。除 tickFromISR() 外,PixelUI API 都属于同一 UI task。完整规则见事件驱动渲染。
输入优先级
- PixelUI 的 FocusManager 先处理 Widget 导航与 active Widget。
- ViewManager 安装的输入路由再把事件交给 active Popup。
- Popup 不存在时,交给页面栈顶 App。
- 页面 transition 正在提交时,输入被拒绝。
这个顺序避免每个 App 自己重复写 Popup/Focus 的抢占逻辑。
绘制层次
renderer() 先画当前 IDrawable(通常是栈顶 App),然后画 Popup,最后画 Focus cursor。fade 是 PixelUI 的页面级过渡,完成后 ViewManager 才会让等待中的新 App 进入 onEnter()。
