1、属性动画:
ObjcectAnimator 属性动画要求最低api支持11, 能改变动画的属性。
Android的属性动画是3.0出现的,它的意义是真正的改变了组件的属性的状态值。 补间动画状态虽然改变但是属性值一直保持不变。
属性动画对于平移,缩放,透明度,还有旋转用的对象都是ObjectAnimator(属性动画师)。
ObjectAnimator oa = ObjectAnimator.ofFloat(target, propertyName, values)
target:作用目标组件,propertyName,属性名字。
属性动画ObjectAnimator 每次只能设置一个属性,可以同时执行多属性。
public void translate(View v) {
//target 目标,动画作用的组件。
// 属性,具有set,get方法, 后面的values是一个可变数据。 属性动画对象的得到是of
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationX", 10,70,20,100);
oa.setDuration(2000);
oa.setRepeatCount(1);
oa.setRepeatMode(ValueAnimator.REVERSE); //ValueAnimator.Reverse 重复的模式 不同于补间动画(结果相同)
oa.start();
}
}
旋转;
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, “rotationX”,0,360); //表示是以x轴中心的旋转,(x轴为轴心的旋转)
public void rotate(View v) {
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "rotation",0,180,90,360); //旋转是顺时针的旋转,
oa.setDuration(2000);
oa.setRepeatCount(1);
oa.setRepeatMode(ValueAnimator.REVERSE);
oa.start();
}
这些属性可以在一起一块执行:
public void fly(View v){
AnimatorSet as = new AnimatorSet();
//设置按个飞
// as.playSequentially(oa1,oa2,oa3,oa4);
// 设置一起飞
as.playTogether(oa1,oa2,oa3,oa4);
as.start();
}
最后:
用xml定义一个属性动画。
定义一个PoperptyAnimation 属性动画, 利用节点objectAnimator定义属性的一些特性;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:duration="200"
android:propertyName="translationX" //属性的名字不能写错 否则不工作。
android:repeatCount="1"
android:repeatMode="reverse"
android:valueFrom="-100"
android:valueTo="100" >
</objectAnimator>
</set>
然后用动画 AnimatorInflater 将xml文件填充;
public void xml(View v){
Animator at = AnimatorInflater.loadAnimator(this, R.animator.objectanimator); //loadAnimator
at.setTarget(iv);
at.start();
}