Android属性动画-ObjectAnimator

1 概览
先看一下属性动画的结构,View动画的基类是Animation,属性动画的基类是Animator
Android属性动画-ObjectAnimator
文章图片

  • ValueAnimator:这个动画是针对属性的值进行动画的 ,不会对UI造成改变,不能直接实现动画效果。需要通过对动画的监听去做一些操作,在监听中将这个值设置给对应的属性,对应的属性才会改变。
  • ObjectAnimator:直接动画所给的对象,他会调用对象对应属性的get/set方法吧属性的值设置给对象的属性,直接实现动画效果。
  • TimeAnimator:这个也不直接实现动画效果,只是提供一个监听回调,返回动画执行的总时间,距离上次动画执行的时间等。
2 使用
利用 ObjectAnimator 的 ofFloat 方法如何实现一个动画:(改变透明度)
ObjectAnimator animator = ObjectAnimator.ofFloat(tv,"alpha",1,0,1); animator.setDuration(2000); animator.start()


分析一下 ofFloat(Object target, String propertyName, float… values) 参数:
参数 解释
target 对象 指定这个动画要操作的是哪个控件
propertyName 属性名 指定这个动画要操作这个控件的哪个属性,这个属性名要求在兑现中必须有对应的public的PsetPropertyName的方法。
values 可变长参数,指这个属性值是从哪变到哪。像我们上面的代码中指定的就是将 textview 的 alpha 属性从 0 变到 1 再变到 0;
3 常见的属性动画
Android属性动画-ObjectAnimator
文章图片

4 属性动画的监听
/** * 监听器一:监听动画变化时的实时值 */ public static interface AnimatorUpdateListener { void onAnimationUpdate(ValueAnimator animation); } //添加方法为:public void addUpdateListener(AnimatorUpdateListener listener) /** * 监听器二:监听动画变化时四个状态 */ public static interface AnimatorListener { void onAnimationStart(Animator animation); void onAnimationEnd(Animator animation); void onAnimationCancel(Animator animation); void onAnimationRepeat(Animator animation); } //添加方法为:public void addListener(AnimatorListener listener)

有时候我们不需要监听这么多状态,只需要监听其中某个状态,我们可以实现另外一个监听。
animator.addListener(new AnimatorListenerAdapter() { //可以实现任何一种你需要的监听 //OnAnimationCancel //OnAnimationEnd //OnAnimationRepeat //OnAnimationStart //OnAnimationPause //OnAnimationResume @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); } });

其他参考:
【Android属性动画-ObjectAnimator】Android动画-属性动画-ObjectAnimator
ObjectAnimator 基本使用
Android动画-属性动画-ValueAnimato

    推荐阅读