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)
阅读顺序建议
核心知识点
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/