Android属性动画和View动画的区别及用法
- 定义和用法区别
属性动画(Property Animation)
-
定义: 属性动画系统允许你动画化任何对象的属性。这意味着这个动画系统不仅可以用于视图对象,还可以用于不绘制到屏幕上的对象。
-
用法: 属性动画通过
ValueAnimator
和ObjectAnimator
类实现。ObjectAnimator
可以直接指定某个对象的某个属性进行动画操作,而ValueAnimator
只是提供一系列的数值,需要开发者自己来应用这个数值。 -
常用方法:
-
ObjectAnimator.ofFloat(Object target, String propertyName, float... values)
-
ObjectAnimator.ofInt(Object target, String propertyName, int... values)
-
ValueAnimator.ofFloat(float... values)
-
ValueAnimator.ofInt(int... values)
-
animator.setDuration(long duration)
-
animator.setInterpolator(TimeInterpolator value)
-
animator.start()
-
View动画(View Animation)
-
定义: View动画包括缩放、平移、旋转和透明度动画,它主要是对View进行操作,也就是所谓的补间动画(Tween Animation)。
-
用法: View动画主要通过XML文件定义,在XML中使用
<alpha>
,<scale>
,<translate>
,<rotate>
等标签定义动画,然后通过AnimationUtils.loadAnimation(context, R.anim.animation_resource)
加载动画。 -
常用方法:
-
AnimationUtils.loadAnimation(Context context, int id)
-
view.startAnimation(Animation animation)
-
animation.setDuration(long durationMillis)
-
animation.setInterpolator(Interpolator i)
-
- 类的继承关系
属性动画类的继承关系
-
ValueAnimator
继承自Animator
-
ObjectAnimator
继承自ValueAnimator
-
AnimatorSet
可以组合多个Animator
对象
View动画类的继承关系
-
Animation
是所有View动画的基类 -
AlphaAnimation
,ScaleAnimation
,TranslateAnimation
,RotateAnimation
都继承自Animation
-
AnimationSet
可以组合多个Animation
对象
- 总结
-
属性动画:
-
可以对任意对象的属性进行动画操作。
-
动画默认作用于对象,不仅限于View。
-
能够实现更复杂的动画效果,如:路径动画。
-
API 11(Android 3.0)开始引入。
-
-
View动画:
-
只能对View进行操作。
-
动画只能应用于View的四种变换:平移、缩放、旋转、透明度。
-
实现简单,主要通过XML配置。
-
存在较长时间,API 1(Android 1.0)就已经引入。
-
属性动画提供了更多的灵活性和功能,但是如果只需要实现简单的View动画效果,View动画仍然是一个简单且有效的选择。