NineOldAndroids是一个开源动画工具,调用时需要导入jar包。
我知道的主要有三个类:ObjectAnimator、ValueAnimator、AnimatorSet
均有此方法 setTarget(Obj) 表示将动画绑定在指定的View上
ObjectAnimator anim1 = ObjectAnimator.ofFloat(img1, "y",0f, 500);//创建一个关于在y轴方向上移动的动画效果对象
anim1可以设置动画时间等各种属性
还可以在res/anim/object_animator
创建xml文件,如下:
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueTo="800"
android:valueType="floatType"
android:propertyName="y"
android:repeatCount="1"
android:repeatMode="reverse"/>
通过如下获得动画对象
ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(appContext, R.anim.object_animator);
<animator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:repeatCount="1"
android:repeatMode="reverse"/>
通过如下获得动画对象
ValueAnimator fader = (ValueAnimator) AnimatorInflater.loadAnimator(appContext, R.anim.animator);
有两个方法:
playSequentially(anim1,anim2)
表示先执行anim1后执行anim2动画
playTogether(Animator... arg0)
表示同时执行所有的动画
2、xml动画集合的表示方法
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueTo="200"
android:valueType="floatType"
android:propertyName="x"
android:repeatCount="1"
android:repeatMode="reverse"/>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueTo="400"
android:valueType="floatType"
android:propertyName="y"
android:repeatCount="1"
android:repeatMode="reverse"/>
</set>
通过此获得xml中动画集合对象
AnimatorSet seq = (AnimatorSet) AnimatorInflater.loadAnimator(appContext, R.anim.animator_set);
AnimatorUpdateListener用于监听动画的过程,用于动画对象调用
//动画变化监听
public class AnimUpdateListener implements AnimatorUpdateListener{
@Override
public void onAnimationUpdate(ValueAnimator animation) {
animation.getAnimatedValue();//动画的属性值
}
}