android 补间动画的实现

   Android 常见动画为补间动画(透明,缩放,平移,旋转)与帧动画。下面说说补间动画的实现。

   1.在配置文件中建立动画

      在res目录下建立anim文件夹,在res/anim目录下建立动画配置文件如下:

     透明动画alpha.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 各动画可以混合 -->
    <!-- 
    alhpa 代表透明
    fromAlpha 从哪个透明多0.0(透明)~1.0(不透明)
    toAlpha   到哪个透明度
    duration  变化时间
     -->
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="5000"
        >
    </alpha>
</set>

 旋转动画rotate.xml

<?xml version="1.0" encoding="utf-8"?>
<set  xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 
     rotate 旋转
     fromDegrees 开始角度
     toDegrees  结束角度  (正数表示顺时针,负数表示逆时针)
     pivotX 旋转参考点
     pivotY
     -->
    <rotate
        android:fromDegrees="0.0"
        android:toDegrees="180.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000"
         >
    </rotate>
</set>

 缩放动画scale.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 
      scale 缩放
           下面相当于放大5倍
     -->
    <scale
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="5.0"
        android:toYScale="5.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000" 
        >
    </scale>
</set>

 平移动画translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set  xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 
      translate   平移动画
    -->
    <translate
        android:fromXDelta="0.0"
        android:toXDelta="200.0"
        android:fromYDelta="0.0"
        android:toYDelta="300.0"
        android:duration="5000"
        >
    </translate>
</set>

   各动画可以融合在一起。

然后对相应的ImageView进行动画设置

public class MainActivity extends Activity {
    ImageView image;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		image=(ImageView) findViewById(R.id.anim);
		//透明
//		Animation animation= AnimationUtils.loadAnimation(this,R.anim.alpha);
//		image.startAnimation(animation);
		//平移
		Animation animation= AnimationUtils.loadAnimation(this,R.anim.translate);
		animation.setFillAfter(true);   //设置动画最后保持的状态
		image.startAnimation(animation);
		//旋转
//		Animation animation= AnimationUtils.loadAnimation(this,R.anim.rotate);
//		image.startAnimation(animation);
		//缩放
//		Animation animation= AnimationUtils.loadAnimation(this,R.anim.scale);
//		image.startAnimation(animation);					
	}
}

 2.通过代码动态创建动画,不需要配置文件

    

//动态创建透明动画(不需要配置文件)
		AlphaAnimation animation2=new AlphaAnimation(1.0f,0.0f);
		animation2.setDuration(5000);
		image.startAnimation(animation2);

猜你喜欢

转载自985359995.iteye.com/blog/2028440