跳到主要内容

简述ObjectAnimator,ValueAnimator及其区别 ?

参考答案:

ObjectAnimator和ValueAnimator都是Android中用于实现动画效果的类,但它们之间在作用对象和使用方式上存在明显的区别。

ObjectAnimator是对对象的属性进行动画操作的类。它本身已经包含了时间引擎和值计算,因此能够直接为对象的属性设置动画。例如,它可以方便地修改View的alpha(透明度)、scaleX(水平缩放比例)、scaleY(垂直缩放比例)等属性。在动画过程中,ObjectAnimator会自动更新属性值,这是通过调用该属性的set方法来实现的。因此,该对象必须有一个相应的get方法来获取该属性值作为动画的起始值。ObjectAnimator作为ValueAnimator的子类,继承了ValueAnimator的功能,并提供了更为简化的操作方式,使得为任何对象设置动画都变得更加容易。

相比之下,ValueAnimator则是对值进行动画操作的类。它可以对任意数值进行动画操作,比如透明度、旋转角度等。ValueAnimator作用于控件的属性,通过改变控件内部的属性值来达到动画效果。例如,它可以用于在一段时间内改变TextView的位置。然而,使用ValueAnimator时,需要手动实现动画值的更新和属性的设置,相对较为繁琐。

总的来说,ObjectAnimator和ValueAnimator的主要区别在于它们的作用对象和使用方式。ObjectAnimator专注于对象的属性动画,提供了更为简便的操作方式;而ValueAnimator则更侧重于对数值的动画操作,需要更多的手动设置。在实际开发中,可以根据具体需求选择使用合适的类来实现动画效果。