《自定义控件三部曲之动画篇(四)——ValueAnimator基本使用》---笔记

学习 自定义控件三部曲之动画篇(四)——ValueAnimator基本使用所做的笔记

Android动画的类型

总共有两种类型:View Animation(视图动画)和Property Animator(属性动画)
其中:
View Animation包括Tween Animation(补间动画)和Frame Animation(逐帧动画);

引入Property Animator(属性动画)的原因

1.Property Animator能实现补间动画无法实现的功能 比如:改变控件的颜色
2.View Animation仅对指定的控件做动画,而Property Animator是通过改变控件的某一个属性值做动画
3.补间动画虽能对控件做动画,但并没有改变控件内部的属性值

ValueAnimator简单使用

第一步:创建ValueAnimator实例

ValueAnimator animator = ValueAnimator.ofInt(0,400);
animator.setDuration(1000);
animator.start();

第二步:添加监听

ValueAnimator animator = ValueAnimator.ofInt(0,400);
animator.setDuration(1000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int curValue = (int)animation.getAnimatedValue();
}
});
animator.start();

总结:
ValueAnimator只负责对指定的数字区间进行动画运算
我们对运算过程进行监听,然后自己对控件做动画操作

ofInt与ofFloat

我们在设定动画初始值时用的是ofFloat()函数,所以每个值的类型必定是Float类型,所以我们获取出来的类型也必然是Float类型。同样,如果我们使用ofInt设定的初始值,那么通过getAnimatedValue()获得的值就应该强转为Int类型。

常用函数

设置动画时长,单位是毫秒
ValueAnimator setDuration(long duration)
获取ValueAnimator在运动时,当前运动点的值
Object getAnimatedValue();
开始动画
void start()
设置循环次数,设置为INFINITE表示无限循环
void setRepeatCount(int value)
设置循环模式
value取值有RESTART,REVERSE
void setRepeatMode(int value)
取消动画
void cancel()

setRepeatCount(int value)用于设置动画循环次数,设置为0表示不循环,设置为ValueAnimation.INFINITE表示无限循环

两个监听器

添加监听器

animator.addUpdateListener,以监听动画过程中值的实时变化

其实在ValueAnimator中共有两个监听器:


监听器一:监听动画变化时的实时值
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)

关于监听器一:AnimatorUpdateListener就是监听动画的实时变化状态,在onAnimationUpdate(ValueAnimator animation)中的animation表示当前状态动画的实例。
在AnimatorListener中,主要是监听Animation的四个状态,start、end、cancel、repeat;当动画开始时,会调用onAnimationStart(Animator animation)方法,当动画结束时调用onAnimationEnd(Animator animation),当动画取消时,调用onAnimationCancel(Animator animation)函数,当动画重复时,会调用onAnimationRepeat(Animator animation)函数
添加AnimatorListener的方法是addListener(AnimatorListener listener);

取消监听

移除AnimatorUpdateListener
void removeUpdateListener(AnimatorUpdateListener listener);
void removeAllUpdateListeners();
移除AnimatorListener
void removeListener(AnimatorListener listener);
void removeAllListeners();

其它函数

延时多久时间开始,单位是毫秒
public void setStartDelay(long startDelay)
完全克隆一个ValueAnimator实例,包括它所有的设置以及所有对监听器代码的处理
public ValueAnimator clone()

clone()方法就好比克隆技术,克隆羊和原来的羊什么都是一样的,但你把原来的羊杀了,克隆的羊会死吗?当然不会了

你可能感兴趣的:(《自定义控件三部曲之动画篇(四)——ValueAnimator基本使用》---笔记)