Android 动画性能专题

覆盖 SystemUI 动画技术栈、Folme 动画库原理、性能问题诊断与修复的完整知识体系。

知识体系导航

动画性能
├── 1. 技术原理(What & How)
│   ├── SystemUI动画技术调研.md        — 全景:AOSP + MIUI 动画技术栈总览
│   └── Folme动画库集成调研文档.md     — 深入:Folme 弹簧动画原理、API、参数
│
├── 2. 工具与集成(How to Observe)
│   ├── AnimatorTracer_集成文档.md     — Perfetto Trace + 详细 Log 集成方案
│   └── FOLME_AAR_INTEGRATION.md      — Folme AAR 升级集成操作手册
│
└── 3. 案例分析(Diagnosis & Fix)
    ├── 指纹解锁动画空跑问题排查.md   — 完整案例:从现象到根因到修复
    ├── folme_report_指纹解锁振荡/    — 振荡问题分析报告(4个属性)
    ├── folme_report_画报空跑_228238/  — 画报 translateY 空跑(NO_MOVEMENT)
    └── folme_report_画报空跑_1778220614/ — 画报 translateY 空跑(IDLE_RUNNING)

阅读顺序建议

阶段文档收获
1. 全景认知SystemUI动画技术调研了解 SystemUI 中有哪些动画技术、各自适用场景
2. 深入原理Folme动画库集成调研掌握 Folme 弹簧动画核心概念:response、damping、minVisibleChange
3. 观测手段AnimatorTracer集成学会如何在 Perfetto trace 中看到动画生命周期
4. 实战诊断指纹解锁动画空跑排查完整走一遍:现象→曲线→Trace标签→根因→修复

核心知识点

Folme 弹簧动画参数

参数含义典型值问题场景
response弹簧周期(越大越慢)0.8~1.0过大→收敛慢
damping_ratio阻尼比0.3~0.9<0.3→振荡,>1.0→过阻尼
minVisibleChange收敛判定阈值1f (px)=0f→永不收敛(空跑)

常见动画性能问题

问题类型表现根因修复
IDLE_RUNNING动画收敛后仍持续运行minVisibleChange=0f设为 1f
NO_MOVEMENT动画运行但无位移to==from触发前检查值
OSCILLATION动画抖动/振荡damping 过低增大 damping
SLOW_CONVERGENCE动画收敛太慢response 过大减小 response

诊断工具链

Perfetto trace → folme-curve-analyst skill → 曲线图 + 诊断报告
                                              ↓
                                      根因定位 → 源码修复
  • AI 分析工具:ai-trace-analyst/skills/folme-curve-analyst/
  • 批量分析:ai-trace-analyst/tools/batch_vdrop_analyzer.py

相关链接

  • Folme 源码:/home/zbc/micode/miuix/library/folme
  • SystemUI 动画代码:/home/zbc/micode/MiuiSystemUI_X/packages/SystemUI/miuiModules/Keyguard/src/main/java/com/android/keyguard/clock/animation/
  • AI 分析工具:/home/zbc/pangu/ai-trace-analyst/skills/folme-curve-analyst/