补间动画分类:
TranslateAnimation(位移动画)
RotateAnimation(旋转动画)
ScaleAnimation(缩放动画)
AlphaAnimation(透明度渐变)
AnimationSet(组合渐变)
1.位移动画
TranslateAnimation animation =new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,1f,Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,1f);
animation.setDuration(2000);
animation.setInterpolator(this, android.R.anim.linear_interpolator);
img.startAnimation(animation);
animation.start();
2.旋转动画
RotateAnimation animation = new RotateAnimation(0, 720, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0f);
animation.setDuration(5000);
animation.setInterpolator(this, android.R.anim.accelerate_interpolator);
img.startAnimation(animation);
animation.start();
3.缩放动画
ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.6f, 1.2f, 1.0f, 0.6f, 1.2f, 1.0f);
animator.setDuration(6000L);//设置缩放时间
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float scale = (Float) animation.getAnimatedValue();
img.setScaleX(scale);
img.setScaleY(scale);
}
});
animator.setInterpolator(new LinearInterpolator());
animator.start();
}
4.透明动画
AlphaAnimation animation = new AlphaAnimation(1, 0);
animation.setDuration(2000);
animation.setRepeatCount(-1);
img.startAnimation(animation);
animation.start();
5.组合渐变
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="5000"
android:fromXScale="0.2"
android:fromYScale="0.2"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.5"
android:toYScale="1.5" />
<!--fromXScale/fromYScale:沿着X轴/Y轴缩放的起始比例-->
<!--toXScale/toYScale:沿着X轴/Y轴缩放的结束比例-->
<!--pivotX/pivotY:缩放的中轴点X/Y坐标,即距离自身左边缘的位置,比如50%就是以图像的 中心为中轴点-->
<rotate
android:duration="5000"
android:fromDegrees="0"
android:repeatCount="1"
android:repeatMode="reverse"
android:toDegrees="360" />
<!--fromDegrees/toDegrees:旋转的起始/结束角度-->
<!--repeatCount:旋转的次数,默认值为0,代表一次,假如是其他值,
比如3,则旋转4次 另外,值为-1或者infinite时,表示动画永不停止-->
<!--repeatMode:设置重复模式,默认restart,但只有当repeatCount大于0或者infinite或-1时才有效。
还可以设置成reverse,表示偶数次显示动画时会做方向相反的运动!-->
<translate
android:duration="5000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="320"
android:toYDelta="0" />
<!--fromXDelta/fromYDelta:动画起始位置的X/Y坐标-->
<!--toXDelta/toYDelta:动画结束位置的X/Y坐标-->
<alpha
android:duration="5000"
android:fromAlpha="1.0"
android:toAlpha="0.1" />
<!--duration :时间-->
<!--fromAlpha :起始透明度-->
<!--toAlpha:结束透明度-->
</set>
//在MainActivity中的代码
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);
img.startAnimation(animation);