Android动画 Animation
前言
Android的动画可以分为三种,View动画,帧动画,属性动画。其中帧动画其实也属于View动画。
View动画通过对场景的对象不断做图像变换,如平移,缩放,旋转,透明度而产生动画效果。
帧动画通过顺序播放一系列图像而产生动画效果
属性动画通过动态改变对象属性而达到动画效果
View动画
View动画支持四种效果:平移,缩放,旋转,透明度动画。
View动画效果对应四个子类:TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation。
动画可以通过xml定义,也可以通过代码创建。他们对应的xml标签为
名称 | 标签 |
平移 | <translate> |
缩放 | <scale> |
旋转 |
<rotate> |
透明度 | <alpha> |
下面我们看这四个效果对应的XML
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true"
android:fillAfter="false"
>
<!-- 透明度起始值和结束值-->
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1"
/>
<!-- 缩放动画,from和to表示起始值和结束值,pivot为轴点-->
<scale
android:duration="400"
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="1"
android:toYScale="1"
android:pivotX="0"
android:pivotY="0"
/>
<!-- 旋转开始和结束的角度,轴点-->
<rotate
android:duration="400"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotY="0"
android:pivotX="0"
/>
<!-- 平移动画,from和to表示起始值和结束值-->
<translate
android:duration="400"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="300"
android:toYDelta="300"
/>
</set>
其中interpolator表示动画速度插值器,fillAfter表示动画结束后View是否停留在结束位置,shareInterpolator表示子集是否使用父集合的插值器,duration表示持续时间,单位ms。
动画的应用参考以下代码
Button button = new Button(this);
button.setText("Animation start");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation animation = AnimationUtils.loadAnimation(AnimationTest.this,R.anim.test);
button.startAnimation(animation);
}
});
RelativeLayout relativeLayout = findViewById(R.id.AA_lo);
relativeLayout.addView(button);