首页»版块 › MagicOS › MagicOS ›全局动画状态机:让所有系统动画“听从一个指挥”,实现 ...

全局动画状态机:让所有系统动画“听从一个指挥”,实现全场景并行打断

[复制帖子标题和链接]

1800

数码爱好者  LV8  发表于 昨天 14:36 江苏 来自:荣耀Magic7 Pro

一句话建议:
在蜂鸟架构基础上,增加一个全局动画状态机,统一管理所有系统UI动画的状态。触控打断时,状态机直接切换状态,而不是让每个动画各自“取消再启动”。目标是让文件夹、通知栏、多任务、控制中心等所有场景都支持并行打断。

一、用户的困惑
很多荣耀用户都有同感:动画还没播完,点下一个操作没反应,像被“硬控”了。文件夹打开时不能滑动,通知栏下拉时不能点别的,返回桌面时不能呼出控制中心。手速快一点,就要等动画播完才能操作。

目前只有多任务堆叠等少数场景支持并行打断,大部分场景仍然“不支持打断”。

二、根因在哪
现在每个系统动画各自为战。动画A在跑,触控来了,动画A要先“取消自己”,再让动画B“启动自己”。这两步是串行的,中间有间隙,用户就感觉卡了一下。

而且每个场景都要单独写打断逻辑,工作量大,覆盖不全。

三、方案:全局动画状态机

1. 统一注册
   所有系统UI动画启动时,向状态机注册:当前状态、能不能打断、打断后切到哪个状态。
2. 统一决策
   触控事件到达时,状态机立刻判断:当前动画能不能打断?打断后切到哪个状态?决策是毫秒级的。
3. 状态切换代替“取消+启动”
   打断不再是“取消动画A、启动动画B”,而是“状态从A切到B”。状态机通知独立动画线程:停止旧状态计算,开始新状态计算。动画线程算好当前帧属性,主线程直接设值。
4. 复用蜂鸟架构的独立动画线程
   蜂鸟架构已经把动画计算放到独立线程,功耗降低8%。状态机在这个基础上增加统一决策层,不改变现有线程模型。
5. 分批接入
   先做文件夹、通知栏、多任务、控制中心四个高频场景,再逐步扩展到其他系统动画。

四、预期效果

· 文件夹展开时滑动,动画不卡,滑动立刻响应。
· 通知栏下拉时点击,点击优先,下拉平滑收尾。
· 返回桌面时呼出控制中心,两个动画同时响应。
· 所有系统动画统一管理,减少逐场景手写打断逻辑的维护成本

@HONOR2608234508028 @MagicOS流畅橙子 @性能_阿勇 @MagicOS流畅李同学
建议投票
24 人已参与
支持
反对
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表