NineOldAndroids

施令雪
2023-12-01

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);

//ValueAnimator

<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);

//AnimatorSet表示动画集合

有两个方法:

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();//动画的属性值
		}	
    	
    }





相关阅读

相关文章

相关问答