![Android App开发进阶与项目实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/109/44510109/b_44510109.jpg)
3.2.1 补间动画的种类
在3.1.3节提到,两张图片之间的渐变效果可以使用过渡图形实现,那么一张图形内部能否运用渐变效果呢?比如展示图片的逐步缩放过程等。正好,Android提供了补间动画,它允许开发者实现某个视图的动态变换,具体包括4种动画效果,分别是灰度动画、平移动画、缩放动画和旋转动画。为什么把这4种动画称作补间动画呢?因为由开发者提供动画的起始状态值与终止状态值,然后系统按照时间推移计算中间的状态值,并自动把中间状态的视图补充到起止视图的变化过程中,自动补充中间视图的动画就被简称为“补间动画”。
4种补间动画(灰度动画AlphaAnimation、平移动画TranslateAnimation、缩放动画ScaleAnimation和旋转动画RotateAnimation)都来自于共同的动画类Animation,因此同时拥有Animation的属性与方法。下面是Animation的常用方法:
- setFillAfter:设置是否维持结束画面。true表示动画结束后停留在结束画面,false表示动画结束后恢复到开始画面。
- setRepeatMode:设置动画的重播模式。Animation.RESTART表示从头开始,Animation.REVERSE表示倒过来播放。默认为Animation.RESTART。
- setRepeatCount:设置动画的重播次数。默认值为0,表示只播放一次;值为ValueAnimator.INFINITE时表示持续重播。
- setDuration:设置动画的持续时间,单位为毫秒。
- setInterpolator:设置动画的插值器。
- setAnimationListener:设置动画的监听器。需实现接口AnimationListener的3个方法:
onAnimationStart:在动画开始时触发。
onAnimationEnd:在动画结束时触发。
onAnimationRepeat:在动画重播时触发。
与帧动画一样,补间动画也需要找一个宿主视图,对宿主视图施展动画效果;不同的是,帧动画的宿主视图只能是由ImageView派生出来的视图家族(图像视图、图像按钮等),而补间动画的宿主视图可以是任意视图,只要派生自View类就行。给补间动画指定宿主视图的方式很简单,调用宿主对象的startAnimation方法即可命令宿主视图开始播放动画,调用宿主对象的clearAnimation方法即可要求宿主视图清除动画。
具体到每种补间动画又有不同的初始化方式。下面来看具体说明。
(1)初始化灰度动画:在构造方法中指定视图透明度的前后数值,取值为0.0~1.0(0表示完全不透明,1表示完全透明)。
(2)初始化平移动画:在构造方法中指定视图在平移前后左上角的坐标值。其中,第一个参数为平移前的横坐标,第二个参数为平移后的横坐标,第三个参数为平移前的纵坐标,第四个参数为平移后的纵坐标。
(3)初始化缩放动画:在构造方法中指定视图横纵坐标的前后缩放比例。缩放比例取值为0.5时表示缩小到原来的二分之一,取值为2时表示放大到原来的两倍。其中,第一个参数为缩放前的横坐标比例,第二个参数为缩放后的横坐标比例,第三个参数为缩放前的纵坐标比例,第四个参数为缩放后的纵坐标比例。
(4)初始化旋转动画:在构造方法中指定视图的旋转角度。其中,第一个参数为旋转前的角度,第二个参数为旋转后的角度,第三个参数为圆心的横坐标类型,第四个参数为圆心横坐标的数值比例,第五个参数为圆心的纵坐标类型,第六个参数为圆心纵坐标的数值比例。坐标类型的取值说明见表3-1。
表3-1 坐标类型的取值说明
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T88_17364.jpg?sign=1739262167-sJUOKwZD5ayaQPdViCb4jcyCqjL3Wo9m-0-b420c3ae79f97ad1dbcf4ea3c343f694)
下面是分别使用4种补间动画的示例代码:
(完整代码见animation\src\main\java\com\example\animation\TweenAnimActivity.java)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P88_7224.jpg?sign=1739262167-3f215dof3K2ejUEv3ikmMZBeP6hApQcP-0-e7a8840a2ab2c3d2ee0b098d813f0f57)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P89_7228.jpg?sign=1739262167-ICnPEAMOA2xjwM1XNoBcryi4FeO8G9Fe-0-c2264d5871b00df9e3f473d5a109d74a)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P90_17365.jpg?sign=1739262167-OdkTXpJ62ZXHAHcOwbQYW71drhOxhqoo-0-83297c734eebce035b64a2ef22a30622)
补间动画的播放效果如图3-10~图3-17所示。图3-10和图3-11为灰度动画播放前后的画面,图3-12和图3-13为平移动画播放前后的画面,图3-14和图3-15为缩放动画播放前后的画面,图3-16和图3-17为旋转动画播放前后的画面。
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P90_7236.jpg?sign=1739262167-zP9ErjamOAgR5bOwirvTUA7XDbV3poa3-0-584460bbc13468365574a7c0ae2acdd3)
图3-10 灰度动画开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P90_7237.jpg?sign=1739262167-joGPpr9VuvTSXk1aje2HwxhvnviXgqOR-0-6b34094a499fe8e632e5787aca6e4d8e)
图3-11 灰度动画即将结束
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7251.jpg?sign=1739262167-7UNERKFLc4onwjaQkVYBcQemSivxYYAU-0-97b9682f4bcadec5a1b286f8b77ddf07)
图3-12 平移动画开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7253.jpg?sign=1739262167-x3qgAXXxMfndrUZVoonKS9WRxvabSQqX-0-39690736e6c7889e8b635074f8dc1bad)
图3-13 平移动画即将结束
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7269.jpg?sign=1739262167-eEINpr6pbP0UnwXdzUppH1PgCXDmc3lV-0-ded84e59c284d5f855ec4267aa1b95a4)
图3-14 缩放动画开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7271.jpg?sign=1739262167-TCLZHYQ5Zky6F0uVFBdeWmPhPWAbn2eT-0-4f9f7ac7b7694b52886adad4c4289890)
图3-15 缩放动画即将结束
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7286.jpg?sign=1739262167-SSFMW87vc7brNmYk7NcZ1NaWXgf2XUen-0-93b2fb1dfd0a21c4a97e65ea0e725f35)
图3-16 旋转动画开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P91_7288.jpg?sign=1739262167-q7dtWVvKGE7EXpDSuv3WuSC6AMzQdLMt-0-2ea32b5a571f0a798e84d9265a869186)
图3-17 旋转动画正在播放