什么是属性动画?
动画元素的某些属性真实发生变化,渐变过程中产生的动画效果。属性动画可以实现比补间动画更多样的自定义动画效果,同时不会出现补间动画中属性其实没有真实变化的情况,而且它可以针对组件某个具体属性、甚至非组件的对象定义动画,是制作复杂、细致动画效果时常用的一种动画实现方式。
原理是什么?
方式一:
属性动画的实现原理:由数值发生器(ValueAnimator)设置开始和结束的两个数值,通过它的setDuration() 方法设置动画总时间,通过插值器(Intepolator) 来控制动画速率,数值发生器会根据这些设置自动生成一个数值序列,然后由它的 getAnimatedValue() 方法获取数值序列值,动画效果就可以通过这个序列值不断改变对象的某些属性值来实现,实现的
final ValueAnimator animator = ValueAnimator.ofFloat(1,0);
animator.setDuration(1000);
animator.setInterpolator(new AccelerateInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
imageView.setAlpha(value);
}
});
animator.start();
方式二:
为了简化属性动画的实现过程,Android 提供 ObjectAnimator 类,它封装了 ValueAnimator 接口的实现、并简化了属性动画的实现代码
ObjectAnimator animator = ObjectAnimator.ofFloat(imageView,"rotationX",30,0);
animator.setRepeatCount(-1);
animator.setDuration(2000);
animator.setInterpolator(new AccelerateInterpolator());
animator.start();