ObjectAnimation 简单用法

在 Android 动画中,总共有两种类型的动画 View Animation(视图动画)和 Property Animator(属性动画);

View Animation 包括 Tween Animation(补间动画)和 Frame Animation(逐帧动画);
Property Animator 包括 ValueAnimator 和 ObjectAnimation;

声明:

private static final int ANIMATION_TIME_ID = android.R.integer.config_shortAnimTime;
final int pressedAnimationTime = getResources().getInteger(ANIMATION_TIME_ID);
pressedAnimator = ObjectAnimator.ofFloat(this, "animationProgress", 0f,0f);
pressedAnimator.setDuration(pressedAnimationTime);

上述代码声明了一个ObjectAnimation对象 设置了持续时间。

pressedAnimator = ObjectAnimator.ofFloat(this, "animationProgress", 0f,0f);

第一个参数指该动画对应的那个控件,如果是自定义的控件,则使用this即可。第二个为该动画的propertyName,该名字对应了代码动画变化时会调用setAnimationProgress()这个函数,系统会自动调用set(propertyName)这个方法,并且强制把propertyName的第一个字母大写,所以对应你需要写出一个set(propertyName)方法。

public void setAnimationProgress(float animationProgress) {
        this.animationProgress = animationProgress;
}
该方法你可以得到(float)animationProgress,

后两个参数文档给的解释是

Constructs and returns an ObjectAnimator that animates between float values. A single value implies that that value is the one being animated to, in which case the start value will be derived from the property being animated and the target object when start() is called for the first time. Two values imply starting and ending values. More than two values imply a starting value, values to animate through along the way, and an ending value (these values will be distributed evenly across the duration of the animation).

后面参数不是固定的,当你设置一个参数的时候,表示动画默认从0到你设置的这个值来变化(系统默认先从get(propertyName)得到默认参数,如果没设置则从0开始)。如果设置两个参数,则表示从value1到value2变化。三个参数表示从value1到value2到value3变化。
当然 你也可以通过setFloatValues()再进行设置参数变化。

最后pressedAnimator.start()即可执行动画。

你可能感兴趣的:(ObjectAnimation 简单用法)