Android自定义动画播放
该文档主要适用于新手。。
Android中主要有两种动画模式,一种是渐变动画(tweened animation),即通过对场景里对象不断做图像变换产生的动画效果;另一种是帧动画(frame by frame),即按顺序放事先配置好的动画画帧。
而我这里做的则是渐变动画。渐变动画有4种动画类型,透明度(alpha)、尺寸伸缩(scale)、位置变换(translate)和图形旋转(rotate)。
步骤:
一、首先在res目录中创建anim文件夹,然后新建xml文件
里面的代码
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="01"
android:toAlpha="1.0"
android:duration="2000"/><!-- 透明度变换 -->
<scale
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="2000"
/><!-- 尺寸变换 -->
<translate
android:fromXDelta="30"
android:toXDelta="0"
android:fromYDelta="30"
android:toYDelta="50"
android:duration="3000"
/><!-- 位置变换 -->
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/><!-- 旋转变换 -->
</set>
fromAlpha属性为动画起始时的透明度,toAlpha属性为动画结束时的透明度,duration为动画持续的时间。
interpolator指定一个动画插入器;fromXScale (fromYScale)属性为动画起始时x(y)坐标上的伸缩尺寸;toXScale (toYScale)属性为动画结束时x (y) 坐标上的伸缩尺寸;privotX和privotY设置动画相对于自身的位置;fillAfter表示动画结束后是否被应用。
fromXDelta(fromYDelta)属性为动画起始时x(y)坐标上的位置;toXDelta(toYDelta)属性为动画结束时x(y)坐标上的位置。
fromDegrees属性为动画起始时物件的角度,toDegrees属性为动画结束时物件的旋转角度。
二、layout下xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/myimageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/imge001"/>
</LinearLayout>
三、源代码部分
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class MainActivity extends Activity {
Animation myAnimation; //动画的引用
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myAnimation = AnimationUtils.loadAnimation(this,R.anim.myanim); //加载动画
imageView = (ImageView) findViewById(R.id.myimageview);
imageView.startAnimation(myAnimation);
}
}
四、效果演示图
主要是个图片的旋转过程