ObjectAnimator类:
根据 setTranslationX(),setTranslationY(),setRotation(),setAlpha(),setScaleX(),setScaleY()
“translationX” //横向平移
“translationY” //纵向平移
"rotation" //旋转
"alpha" //缩放
"scaleX" //横向缩放
"scaleY" //纵向缩放
ObjectAnimator animator;
//平移
animator = ObjectAnimator.ofFloat(textview,"translationX",0f,400f);
animator.setDuration(1000);
animator.start();
//旋转
animator = ObjectAnimator.ofFloat(textview,"rotation",0f,300f);
animator.setDuration(1000);
animator.start();
0为透明 1为恢复到原来状态
animator = ObjectAnimator.ofFloat(textview,"alpha",0f,1f);
animator.setDuration(1000);
animator.start();
//从控件里面缩放到外面
animator = ObjectAnimator.ofFloat(textview,"scaleX",0f,1f);
animator.setDuration(1000);
animator.start();
组合动画:
after(Animator anim) 将现有动画插入到传入的动画之后执行
after(long delay) 将现有动画延迟指定毫秒后执行
before(Animator anim) 将现有动画插入到传入的动画之前执行
with(Animator anim) 将现有动画和传入的动画同时执行
//平移 旋转+透明 缩放
ObjectAnimator animator1 = ObjectAnimator.ofFloat(textview,"translationX",0f,200f,0f);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(textview,"rotation",0f,360f);
ObjectAnimator animator3 = ObjectAnimator.ofFloat(textview,"alpha",0f,1f);
ObjectAnimator animator4 = ObjectAnimator.ofFloat(textview,"scaleX",0f,1f);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(animator2).after(animator1).before(animator4).with(animator3);
animatorSet.setDuration(3000);
animatorSet.start();
使用XML编写动画:
在res下创建animator文件夹,创建objectanimator.xml
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="alpha"
/>
在代码中将文件加载进来并启动动画:
Animator animator = AnimatorInflater.loadAnimator(MainActivity.this,R.animator.objectanimator);
animator.setTarget(textview);
animator.start();
组合动画:
<animator> 对应代码中的ValueAnimator
<objectAnimator> 对应代码中的ObjectAnimator
<set> 对应代码中的AnimatorSet
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<!--平移 旋转+透明 缩放 -->
<set android:ordering="sequentially">
<objectAnimator
android:propertyName="translationX"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="200"
android:duration="3000"
/>
<set android:ordering="together">
<objectAnimator
android:propertyName="rotation"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="360"
android:duration="3000"
/>
<objectAnimator
android:propertyName="alpha"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1"
android:duration="3000"
/>
</set>
<set android:ordering="sequentially">
<objectAnimator
android:propertyName="scaleX"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1"
android:duration="3000"
/>
</set>
</set>
</set>
Animator animator10 = AnimatorInflater.loadAnimator(MainActivity.this,R.animator.objectanimator2);
animator10.setTarget(textview);
animator10.start();
参考链接:https://blog.csdn.net/guolin_blog/article/details/43536355