1.各类动画
ObjectAnimator objectAnimator1=ObjectAnimator.ofFloat(View,"translationX",100f);//X平移
ObjectAnimator objectAnimator2=ObjectAnimator.ofFloat(View,"translationY",100f);//Y平移
ObjectAnimator objectAnimator3=ObjectAnimator.ofFloat(View,"roation", 0 , -90 );//中心点旋转
//起始值 结束值
ObjectAnimator objectAnimator4=ObjectAnimator.ofFloat(View,"roationX", 0 , -90 , 90 );//围绕X轴旋转
//起始值 过程值 结束值
ObjectAnimator objectAnimator5=ObjectAnimator.ofFloat(View,"roationY", 360 );//围绕Y轴旋转
//结束值
ObjectAnimator objectAnimator6=ObjectAnimator.ofFloat(View,"scaleX", 1.5f );//围X轴缩放 0->1.5
ValueAnimator objectAnimator7=ObjectAnimator.ofFloat(View,"scaleY", 1, 1.5f, 1);//围Y轴缩放 1->1.5->1
//向上转型
ObjectAnimator objectAnimator8=ObjectAnimator.ofFloat(View,"alpha", 0.0f );//透明度
控件属性:
translationX , translationY , rotation , rotationX , rotationY , scaleX , scaleY , alpha 即使未在控件中写明,也会默认存在并有默认值。
2.添加监听器
objectAnimator.addListener(new AnimatorListenerAdapter(){
public void onAnimatonEnd(Animaton animaton){
//具体执行
}
});
3.设置动画时长
objectAnimator.setDuration(1000);
4.设置重复次数
objectAnimator.setRepeatCount(0);
参数:
- 0 为不重复
- 1~n 为具体次数
- ValueAnimator.INFINITE 为无限循环
5.评估程序
有默认,可不写。
评估程序(类接口)主要用于告知属性动画系统如何计算指定属性的值。评估程序使用Animatio类提供的计时数据(动画的起始值和结束值)来计算属性添加动画效果后的值。属性动画示化可提供的评估程序如下:
- IntEvaluator:用于计算Int类型的属性值的默认评估程序。
- FloatEvaluator:用于计算Float类型的属性值的默认评估程序。
- ArgbEvaluator:用于计算颜色类型的属性值(用十六进制教表示)的默认评估程序。
- TypeEvaluator:此接口用于自定义一个评估程序。如果要添加动画效果的对象属性值不是Int类型、Float类型或颜色类型,那么必须实现TypeEvaluator接口,才能指定如何计算对象的属性添加动画效果之后的值。如果不想使用默认的评估程序处理Int类型、Float类型或颜色类型的数据,还可以为这些类型的值指定自定义的TypeEvaluator。
6.添加插值器
objectAnimator.setInterpolator( new LinearInterpolator() );
插值器:
- AccelerateDecelerateInterpolator:该插值器的变化率在开始和结束时缓慢,但在中间会加快(默认)。
- AccelerateInterpolator:该插值器的变化率在开始时较为缓慢,然后会加快。
- AnticipateInterpolator:该插值器先反向变化,然后急速正向变化。
- AnticipateOvershootInterpolator:该插值器先反向变化,然后急速正向变化,然后超过定位值最后返回最终值。
- BounceInterpolator:该插值器的变化会跳过结尾处。
- CycleInterpolator:该插值器的变化会在指定数量的周期内重复。
- DecelerateInterpolator:该插值器的变化率开始很快、然后减速。
- LinearInterpolator:该插值器的变化率恒定不变。
- OvershootInterpolator:该插值器会急速正向变化,再超出最终值,然后返回。
- TimeInterpolator:该接口用于自定义一个插值器。
7.启动/停止动画
AnimatorSet animatorSet1=new AnimatorSet();
animatorSet1.play(objectAnimator1); //播放~
animatorSet1.play(objectAnimator1).with(objectAnimator2); //播放~和~
animatorSet1.play(objectAnimator1).before(objectAnimator2); //播放~在~之前
animatorSet1.play(objectAnimator1).after(objectAnimator2); //播放~在~之后
//AnimatorSet可当Animator使用
AnimatorSet animatorSet2=new AnimatorSet();
animatorSet2.play(animatorSet1).before(objectAnimator2);
animatorSet2.start(); //启动AnimatorSet
boolean isrunning=animatorSet2.isRunning(); //是否处于运行中
animatorSet2.pause(); //暂停