View 动画原理与属性动画
View 动画原理与属性动画
从 Animation 到 PropertyAnimator 完全指南
目录
1. 动画类型概述
1 | ┌─────────────────────────────────────────────────────────────────────┐ |
2. View Animation
基本用法
1 | // XML 中定义 |
View Animation 缺点
1 | // ❌ 缺点 1:只改变显示,不改变属性 |
3. 属性动画 Property Animation
ValueAnimator
1 | // 基本用法 |
ObjectAnimator
1 | // 直接改变属性 |
自定义属性动画
1 | // 1. 为 View 添加 setter |
4. Interpolator 插值器
内置插值器
1 | // 加速 |
插值器对比
1 | 时间进度: 0 0.25 0.5 0.75 1.0 |
自定义插值器
1 | class CustomInterpolator : Interpolator { |
5. 自定义动画
自定义 ValueAnimator
1 | class CircleRevealAnimator(private val view: View) { |
自定义 TypeEvaluator
1 | // 颜色渐变 |
自定义 ObjectAnimator
1 | // 1. 在 View 中添加属性 |
6. 动画组合与监听
AnimatorSet
1 | val scaleX = ObjectAnimator.ofFloat(view, "scaleX", 1f, 1.5f).apply { duration = 300 } |
PropertyValuesHolder
1 | // 同时改变多个属性 |
动画监听
1 | // Animator 监听 |
面试常问
| 问题 | 答案 |
|---|---|
| View Animation vs 属性动画? | View Animation 只改变显示,属性动画改变实际属性 |
| 动画为什么卡顿? | 16ms 内未完成,或在主线程做耗时操作 |
| 如何停止动画? | animator.cancel() 或 view.clearAnimation() |
| Interpolator 作用? | 控制动画速率变化 |
总结
1 | Android 动画核心: |
相关文章: