官网地址: https://developer.android.com/reference/android/view/ViewPropertyAnimator.html
###ViewPropertyAnimator的优势: 当一个View的几个属性并行执行动画时,ViewPropertyAnimator提供了一种更简单的实现方式。ViewPropertyAnimator是在3.1系统中加入的,ViewPropertyAnimator跟ObjectAnimator很像,也能改变View的实际值,但是ViewPropertyAnimator只能作用于View而不能作用于其他object 。假如需要同时对多个属性执行动画时,ViewPropertyAnimator效率更高,代码更简洁、更易读。
常用方法 | 备注 |
---|---|
translationX(float value)、translationY(float value) | translationX、translationY分别为向X、Y轴的移动value的距离 |
x(float value)、y(float value) | 如x(valueX)、y(valueY):将目标View移动到(valueX,valueY)的坐标点上 |
alpha() | 设置View的透明度 |
rotation() | 旋转View |
scaleX(float value)、scaleY(float value) | 设置View的放缩,value是倍数,如设置scaleX(2f)是View在X轴方向放大2倍,scaleY同理 |
setDuration(long duration) | 设置动画持续时间 |
setStartDelay(long startDelay) | 动画开始之前的延迟时间 |
setListener(Animator.AnimatorListener listener) | 动画监听 |
setInterpolator(TimeInterpolator interpolator) | 时间插值器,用来修饰动画效果 |
setUpdateListener(ValueAnimator.AnimatorUpdateListener listener) | 在API 19或以上使用 动画更新回调 |
withStartAction(Runnable runnable) | 动画开始时设置的行为 |
withEndAction(Runnable runnable) | 动画结束时设置的行为 |
###ViewPropertyAnimator和ObjectAnimator使用对比
先看效果图:
如上图中的效果,将View移动到(500f,500f)坐标,分别使用ViewPropertyAnimator和ObjectAnimator来实现:
1、多个ObjectAnimator 组合:
ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 500f);
ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 500f);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(animX, animY);
animSetXY.start();
复制代码
2、或者使用一个ObjectAnimator+PropertyValuesHolder :
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 500f);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 500f);
ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();
复制代码
3、使用ViewPropertyAnimator:
myView.animate().x(500f).y(500f).start();
复制代码
可见在特定情况下使用ViewPropertyAnimator可以大大简化了代码量和可阅读性。