参考链接:
官方文档链接:Animation and Graphics Overview
Android 开发进阶:自定义 View 1-6 属性动画(上手篇)
Android 开发进阶:自定义 View 1-7 属性动画(进阶篇)
Android动画可以分为以下三种:
而现在我们用得比较多,官方也比较推荐的就是第一种,属性动画。所以接下来只讲属性动画。
ViewPropertyAnimator、ObjectAnimator、ValueAnimator 这三种 Animator,它们其实是一种递进的关系:从左到右依次变得更加难用,也更加灵活。但它们的性能是一样的,因为 ViewPropertyAnimator 和 ObjectAnimator 的内部实现其实都是 ValueAnimator,ObjectAnimator 更是本来就是 ValueAnimator 的子类,它们三个的性能并没有差别。它们的差别只是使用的便捷性以及功能的灵活性。
1.ViewPropertyAnimator
通过view.animate()就会返回一个这个对象,使用默认提供的方法就可以实现很多动画,默认时长是300ms,也可以修改
2.ObjectAnimator
使用方式:
如果是自定义控件,需要添加 setter / getter 方法;
用 ObjectAnimator.ofXXX() 创建 ObjectAnimator 对象;
用 start() 方法执行动画。
可以调用setInterpolator给定各种各样的插值器
3.ValueAnimator
ValueAnimator 是 ObjectAnimator 的父类,实际上,ValueAnimator 就是一个不能指定目标对象版本的 ObjectAnimator
4.TypeEvaluator
当需要对其他类型(除了简单的ofInt,ofFloat等等之外)来做属性动画的时候,就需要用到 TypeEvaluator 了,继承这个类实现自己的对象类型变换
5.其他
「关于复杂的属性关系来做动画」,就这么三种:
使用 PropertyValuesHolder 来对多个属性同时做动画;
使用 AnimatorSet 来同时管理调配多个动画;
PropertyValuesHolder 的进阶使用:使用 PropertyValuesHolder.ofKeyframe() 来把一个属性拆分成多段,执行更加精细的属性动画。