最基础属性动画 ObjectAnimator
- 单个动画:
ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(view ,”scaleX”,1f ,3f,1f );
创建objectAnimtor ,第一个参数是操作的view, 第二个参数是动画类别,来自 view的get和set方法,例如getScaleX 和setScaleX 。之后的参数是变更范围 - 多个动画组合:
//组合动画:
//组合动画主要借助AnimatorSet这个类, 再进行play()方法,会返回一个AnimatorSet.Builder的实例
//paly方法会传入一个动画对象,这个动画是基础动画,在这个动画的基础上进行扩张
// AnimatorSet.Builder 里面有四个方法:
//after (Animator ) 现有动画插入传入动画之后执行 (after 的动画最先执行)
//after (long delay) 现有动画推迟delay ms之后执行
//before (Anumator ) 现有动画在插入动画之前执行
//with 一起执行
// 例如:
//一个组合动画是先执行X轴缩放,在旋转360度过程中进行透明度转化
AnimatorSet animationSet = new AnimatorSet();
animationSet.play(rotate).with(objectAnimator2).after(objectAnimator1);
animationSet.setDuration(3000);
//动画监听方法
animationSet.addListener(new AnimatorListenerAdapter() { //动画监听的适配器
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
}
});
animationSet.start();
ValueAnimator 动画
1. ValueAnimator 键值动画,初始化:`
ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(),startPoint,endPoint);`
参数说明: //第一个参数是 开始点到结束点的平滑过程 之后的参数是变更范围
2.PointEvaluator() 第一个参数可以自己定义: 实现了TypeEvaluator 接口,实现了 evaluate(float fraction, Object startValue, Object endValue) 方法,里面有第一个参数是渐变的程度 fraction 的值取决于补简器中的getInterpolation 方法返回的input值。
*getInterpolation 获得形参,再进行运算,返回fraction 。,
* 系统默认的Interpolation 是AccelerateDecelerateInterpolator 返回代码是
*
* return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f;
3. 补间器 Interpolator 主要实现getInterpolation (float input)方法, input由系统不断计算出来,从0到1,返回fraction 值,提供给Evaluator 类的 evaluate(float fraction, Object startValue, Object endValue) 方法
//设置补间器。补间器是一个接口,内部有实例方法,比如:
//AccelerateInterpolator()就是加速度的补间器
//BounceInterpolator 这个是有弹跳器的。
anim.setInterpolator(new BounceInterpolator());