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

 

posted @ 2022-07-21 14:58  Miraculous_B  阅读(99)  评论(0编辑  收藏  举报