补间动画(Tween Animation)
补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的。补间动画的优点是可以节省空间。目前Android应用框架支持的补间动画效果有以下5种。具体实现在android.view.animation类库中。
AlphaAnimation:透明度(alpha)渐变效果,对应<alpha/>标签。
TranslateAnimation:位移渐变,需要指定移动点的开始和结束坐标,对应<translate/>标签。
ScaleAnimation:缩放渐变,可以指定缩放的参考点,对应<scale/>标签。
RotateAnimation:旋转渐变,可以指定旋转的参考点,对应<rotate/>标签。
AnimationSet:组合渐变,支持组合多种渐变效果,对应<set/>标签。
补间动画的效果同样可以使用XML语言来定义,这些动画模板文件通常会被放在Android项目的res/anim/目录下。
1. Animation animation = AnimationUtils.loadAnimation(this,
2. R.anim.rotate_demo);
3. imageView.startAnimation(animation);
1. <alpha xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
3. android:fromAlpha="1.0"
4. android:toAlpha="0.1"
5. android:duration="2000"/>
6. <!--
7. fromAlpha :起始透明度
8. toAlpha:结束透明度
9. 1.0表示完全不透明
10. 0.0表示完全透明
11. -->
1. <rotate xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
3. android:fromDegrees="0"
4. android:toDegrees="360"
5. android:duration="1000"
6. android:repeatCount="1"
7. android:repeatMode="reverse"/>
8. <!--
9. fromDegrees:表示旋转的起始角度
10. toDegrees:表示旋转的结束角度
11. repeatCount:旋转的次数 默认值是0 代表旋转1次 如果值是repeatCount=4 旋转5次,值为-1或者infinite时,表示补间动画永不停止
12. repeatMode 设置重复的模式。默认是restart。当repeatCount的值大于0或者为infinite时才有效。
13. repeatCount=-1 或者infinite 循环了
14. 还可以设成reverse,表示偶数次显示动画时会做与动画文件定义的方向相反的方向动行。
15. -->
1. <scale xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@android:anim/accelerate_interpolator"
3. android:fromXScale="0.2"
4. android:toXScale="1.5"
5. android:fromYScale="0.2"
6. android:toYScale="1.5"
7. android:pivotX="50%"
8. android:pivotY="50%"
9. android:duration="2000"/>
10.
11. <!--
12. fromXScale:表示沿着x轴缩放的起始比例
13. toXScale:表示沿着x轴缩放的结束比例
14.
15. fromYScale:表示沿着y轴缩放的起始比例
16. toYScale:表示沿着y轴缩放的结束比例
17.
18. 图片中心点:
19. android:pivotX="50%"
20. android:pivotY="50%"
21.
22. -->
1. <translate xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
3. android:fromXDelta="0"
4. android:toXDelta="320"
5. android:fromYDelta="0"
6. android:toYDelta="0"
7. android:duration="2000"/>
8.
9. <!--
10. android:interpolator 动画的渲染器
11. 1、accelerate_interpolator(动画加速器) 使动画在开始的时候 最慢,然后逐渐加速
12. 2、decelerate_interpolator(动画减速器)使动画在开始的时候 最快,然后逐渐减速
13. 3、accelerate_decelerate_interpolator(动画加速减速器)
14. 中间位置分层: 使动画在开始的时候 最慢,然后逐渐加速
15. 使动画在开始的时候 最快,然后逐渐减速 结束的位置最慢
16. fromXDelta 动画起始位置的横坐标
17. toXDelta 动画起结束位置的横坐标
18. fromYDelta 动画起始位置的纵坐标
19. toYDelta 动画结束位置的纵坐标
20. duration 动画的持续时间
21. -->
1. <set xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@android:anim/decelerate_interpolator"
3. android:shareInterpolator="true" >
4.
5. <scale
6. android:duration="2000"
7. android:fromXScale="0.2"
8. android:fromYScale="0.2"
9. android:pivotX="50%"
10. android:pivotY="50%"
11. android:toXScale="1.5"
12. android:toYScale="1.5" />
13.
14. <rotate
15. android:duration="1000"
16. android:fromDegrees="0"
17. android:repeatCount="1"
18. android:repeatMode="reverse"
19. android:toDegrees="360" />
20.
21. <translate
22. android:duration="2000"
23. android:fromXDelta="0"
24. android:fromYDelta="0"
25. android:toXDelta="320"
26. android:toYDelta="0" />
27.
28. <alpha
29. android:duration="2000"
30. android:fromAlpha="1.0"
31. android:toAlpha="0.1" />
32.
33.
34.
35. </set>