Android ViewPropertyAnimator:让动画变得简单起来!

官网地址:
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使用对比

先看效果图:

《Android ViewPropertyAnimator:让动画变得简单起来!》 GIF.gif

如上图中的效果,将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可以大大简化了代码量和可阅读性。

    原文作者:_小马快跑_
    原文地址: https://www.jianshu.com/p/d960e69a7e6a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞