1.属性动画:
1.属性动画分两种:ObjectAnimator、ValueAnimator;
2.ObjectAnimator继承至ValueAnimator;
3.ObjectAnimator是通过定义字符串的方式设置属性,底层是根据字符串反射获得的方法。
示例:
ObjectAnimator
//1.获取ObjectAnimator 实例 通过类提供的静态方法 参1:目标(谁执行动画) //参数2:属性名
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "rotation",0,90,180,360);
//2.设置动画执行时长
oa.setDuration(2000);
//3.启动动画
oa.start();
ValueAnimator
valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);//这个可以设置多个值
valueAnimator.setDuration(5000);//变化时间
//设置动画变化监听
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float val = (float) animation.getAnimatedValue();
//在5000ms内val值会从0.0f变到1.0f,所以可以通过这个数控制动画的渐变过程
pbCalm.setProgress((int) (before[0] + (after[0] - before[0]) * val));
}
});
//设置动画各个时段的监听,做一些数据的初始化和归位
valueAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
属性动画的属性:
anim.setDuration(500);
// 时长
anim.setStartDelay(500);
// 延迟
anim.setRepeatCount(0);
// 重复:播放次数 = 重放次数+1
// 动画播放次数 = infinite时,动画无限重复
anim.setRepeatMode(ValueAnimator.RESTART);
// 设置重复播放动画模式
// ValueAnimator.RESTART(默认):正序重放
// ValueAnimator.REVERSE:倒序回放
2.补间动画
补间动画一般是用xml文件实现