src文件中
package sj.com;
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class Zsj extends Activity {
Animation myAnimation;
ImageView imageview;
/**Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;
在XML文件中:
alpha 渐变透明度动画效果
fromAlpha 属性为动画起始时透明度(0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之间的float数据类型的数字)
toAlpha 属性为动画结束时透明度
scale 渐变尺寸伸缩动画效果
fromXScale[float] ,fromYScale[float] 为动画起始时,X、Y坐标上的伸缩尺寸 (0.0表示收缩到没有,1.0表示正常无伸缩,值小于1.0表示收缩,值大于1.0表示放大)
toXScale [float],toYScale[float] 为动画结束时,X、Y坐标上的伸缩尺寸
pivotX[float],pivotY[float] 为动画相对于物件的X、Y坐标的开始位置(从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置 )
translate 画面转换位置移动动画效果
fromXDelta,toXDelta 为动画、结束起始时 X坐标上的位置
fromYDelta,toYDelta 为动画、结束起始时 Y坐标上的位置
rotate 画面转移旋转动画效果
fromDegrees 为动画起始时物件的角度. 当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
toDegrees 属性为动画结束时物件旋转的角度. 可以大于360度
pivotX,pivotY 为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
Tween Animation共同的节点属性:
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator 指定一个动画的插入器 .常见的插入器
accelerate_decelerate_interpolator(加速-减速 动画插入器)
accelerate_interpolator(加速-动画插入器)
decelerate_interpolator(减速- 动画插入器)
及其他特定的动画效果
Interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。
Interpolator 是基类,封装了所有 Interpolator 的共同方法,它只有一个方法, 即 getInterpolation (float input)。
Android 提供了几个 Interpolator 子类,实现了不同的速度曲线,如下:
AccelerateDecelerateInterpolator 动画开始和结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变
repeatCount[int] 动画的重复次数
repeatMode[int] 1:重新开始 , 2:返回
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变. 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
Tween Animation如何使用
使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件
例如:
Animation myAnimation = AnimationUtils.loadAnimation(this,R.anim.myanim);
(注意:此处AnimationUtils直接调用了自身的静态方法:public static Animation loadAnimation (Context context, int id))
ImageView imageview = (ImageView)this.findViewById(R.id.myImageView);
(注意:方法public View findViewById (int id),此方法得到一个View对象并详细转型为ImageViewd对象)
imgeview.startAnimation(myAnimation)
(注意:方法public void startAnimation (Animation animation)开启动画,此方法为View类中的方法,ImageView为View的子类所以可以用ImageView对象调用此方法)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myAnimation= AnimationUtils.loadAnimation(this,R.anim.myanim);
imageview = (ImageView)this.findViewById(R.id.myImageView);
imageview.startAnimation(myAnimation);
}
}
res main.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImagView
android:id="@+id/imagview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src = "@drawable/img"
/>
</LinearLayout>
res anim myanim.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="2000"
/>
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="2"
android:startOffset="5000"
android:fillAfter="true"
android:duration="3000"
/>
<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>