==========================代码实现=======================================
Android Tweened Animation一共有四种
Alpha: 淡入淡出效果
Scale: 缩放效果
Rotate: 旋转效果
Translate:移动效果
使用Tweened Animations的步骤
1.创建一个AnimationSet对象
2.根据需要创建需要的Animation对象
3.根据软件动画的需要,为Animation对象设置相应的数据
4.将Animation对象添加到AnimationSet对象中
5.使控件对象开始执行AnimationSet
Alpha动画
- AnimationSet as=new AnimationSet(true);
- AlphaAnimation al=new AlphaAnimation(1,0);
- //1代表完全不透明,0代表完全透明
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Rotate动画
- AnimationSet as=new AnimationSet(true);
- RotateAnimation al=new RotateAnimation (0,720,Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
- //前两个参数参数旋转的角度,后面几个参数决定旋转的中心
- //Animation.ABSOLUTE:绝对坐标
- //Animation.RELATIVE_TO_PARENT:相对父控件
- //Animation.RELATIVE_TO_SELF:相对自己
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Scale动画
- AnimationSet as=new AnimationSet(true);
- ScaleAnimation al=new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
- //前四个参数是X从多大到多大,Y从多大到多大,后面的参数是缩放的中心点
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Translate动画
- AnimationSet as=new AnimationSet(true);
- TranslateAnimation al=new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,2,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,2);
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Animation还有几个方法
setFillAfter(boolean fillAfter)
如果fillAfter的值为真的话,动画结束后,控件停留在执行后的状态
setFillBefore(boolean fillBefore)
如果fillBefore的值为真的话,动画结束后,控件停留在动画开始的状态
setStartOffset(long startOffset)
设置动画控件执行动画之前等待的时间
setRepeatCount(int repeatCount)
设置动画重复执行的次数
=============================xml文件实现========================================
Animation也可以放在XML文件中,这样程序的可维护性提高了。在XML中写动画的步骤如下
1.在res文件夹下面新建一个名为anim的文件夹
2.创建xml文件,并首先加入set标签,改标签如下
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
</set>
3.在该标签当中加入rotate,alpha,scale或者translate标签
4.在代码当中使用AnimationUtils加载xml文件,并生成Animation对象
Alpha动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <alpha
- android:fromAlpha="1.0"
- android:toAlpha="0.0"
- android:startOffset="500"
- android:duration="2000"
- />
- </set></span>
iv.startAnimation(a);
Scale动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <scale
- android:fromXScale="1.0"
- android:toXScale="0.0"
- android:fromYScale="1.0"
- android:toYScale="0.0"
- android:pivotX="50%"
- android:pivotY="50%"
- android:duration="2000"
- />
- </set></span>
Rotate动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <rotate
- android:fromDegrees="0"
- android:toDegrees="400"
- android:pivotX="50%"
- android:pivotY="50%"
- android:duration="3000"
- />
- </set></span>
Translate动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <translate
- android:fromXDelta="50%"
- android:toXDelta="100%"
- android:fromYDelta="50%"
- android:toYDelta="100%"
- android:duration="3000"
- />
- </set></span>
这里重点提一下android:pivotX和android:pivotY和android:fromXDelta,android:toXDelta
android:pivotX="50"使用绝对坐标
android:pivotX="50%"相对自己
android:pivotX="50%p"相对父控件