Android属性动画-ObjectAnimator

1 概览

先看一下属性动画的结构,View动画的基类是Animation,属性动画的基类是Animator
在这里插入图片描述

  • 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 常见的属性动画

在这里插入图片描述

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
ObjectAnimator 基本使用
Android动画-属性动画-ValueAnimato

猜你喜欢

转载自blog.csdn.net/qq_35008279/article/details/83650727