![Android App开发进阶与项目实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/109/44510109/b_44510109.jpg)
3.3.3 插值器和估值器
前面在介绍补间动画与属性动画时都提到了插值器,属性动画还提到了估值器,因为插值器和估值器是相互关联的,所以放在本小节一起介绍。
插值器用来控制属性值的变化速率,也可以理解为动画播放的速度,默认是先加速再减速(AccelerateDecelerateInterpolator)。若要给动画播放指定某种速率形式(比如匀速播放),调用setInterpolator方法设置对应的插值器实现类即可,无论是补间动画、集合动画、属性动画还是属性动画组合,都可以设置插值器。插值器实现类的说明见表3-3。
表3-3 插值器实现类的说明
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T100_17386.jpg?sign=1739356265-qxI9JeUaAMUfbQ1Qc4NyXroqi6fqei5z-0-2b1435f8b7b1d82c6517a5927933b46a)
估值器专用于属性动画,主要描述该属性的数值变化要采用什么单位,比如整数类型的渐变数值要取整,颜色的渐变数值为ARGB格式的颜色对象,矩形的渐变数值为Rect对象等。要给属性动画设置估值器,调用属性动画对象的setEvaluator方法即可。估值器实现类的说明见表3-4。
表3-4 估值器实现类的说明
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T101_17387.jpg?sign=1739356265-yTLppDCIIftMMBwHfduslU3n1mX3NTB8-0-6768cd5b5de5d7b3b6115077bfcfbcdb)
一般情况下,无须单独设置属性动画的估值器,使用系统默认的估值器即可。如果属性类型不是int、float、argb三种,只能通过ofObject方法构造属性动画对象,就必须指定该属性的估值器,否则系统不知道如何计算渐变属性值。为方便记忆属性动画的构造方法与估值器的关联关系,表3-5列出了两者之间的对应关系。
表3-5 属性类型与估值器的对应关系
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T101_17388.jpg?sign=1739356265-Mrb3yAEG0VIDPsV3mQjttbqZ3i5HNOsZ-0-e2f6a578a8ad49353ad4063ad674e245)
下面是在属性动画中运用插值器和估值器的示例代码:
(完整代码见animation\src\main\java\com\example\animation\InterpolatorActivity.java)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P101_7754.jpg?sign=1739356265-ldt4oUUGuAhAcC4hNPLpQv2M2Ae1nb4N-0-d83574d3519fd618b54bdfd77a8e15df)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P102_7759.jpg?sign=1739356265-qj7MKP2yO9ppbDI5xDE5kfGItloaIvZr-0-c6ac3d5a302836063621f3591be1e4d1)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_17389.jpg?sign=1739356265-x4YGsGzZG2dqCYD1Tu77vbrQ3Tns6nvW-0-2ff649e93847c7c01106cebc9970b652)
插值器和估值器的演示效果如图3-26和图3-27所示。图3-26为文字变大时的画面,图3-27为文字变小时的画面。此处采用的是震荡插值器,由于截图无法准确反映震荡的动画效果,因此建议读者自己运行和测试该App,这样会有更直观的感受。
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_7765.jpg?sign=1739356265-4cQAOrX5znZZmQGZuIjTzq9OTfg5v1Ch-0-a98d29cb1aba99376b44c551c6fd0347)
图3-26 震荡插值器开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_7766.jpg?sign=1739356265-KqTGQ5X5F549qBU5Kg4OUuzbaWkouk7k-0-4f28dba64ed3655b1d766ee7848042b0)
图3-27 震荡插值器即将结束