![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=1739260846-oyFcjEnTHtfLKvsf4BX2lUXppxJ9Tgr6-0-01341e5450939ee90b6a8541a9130cca)
估值器专用于属性动画,主要描述该属性的数值变化要采用什么单位,比如整数类型的渐变数值要取整,颜色的渐变数值为ARGB格式的颜色对象,矩形的渐变数值为Rect对象等。要给属性动画设置估值器,调用属性动画对象的setEvaluator方法即可。估值器实现类的说明见表3-4。
表3-4 估值器实现类的说明
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T101_17387.jpg?sign=1739260846-MRyBtILNfJsoptx9rsiZ09rW9Op4qnFX-0-a33edab0cd60eb0f5bc8e2843976249c)
一般情况下,无须单独设置属性动画的估值器,使用系统默认的估值器即可。如果属性类型不是int、float、argb三种,只能通过ofObject方法构造属性动画对象,就必须指定该属性的估值器,否则系统不知道如何计算渐变属性值。为方便记忆属性动画的构造方法与估值器的关联关系,表3-5列出了两者之间的对应关系。
表3-5 属性类型与估值器的对应关系
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-T101_17388.jpg?sign=1739260846-QfzH16CP95JWD6k8Lc77Y9lv18KhVcCg-0-bac20333390ae8d8261186b89e518080)
下面是在属性动画中运用插值器和估值器的示例代码:
(完整代码见animation\src\main\java\com\example\animation\InterpolatorActivity.java)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P101_7754.jpg?sign=1739260846-vRPBLkeSzY0wD4Ue9jUhSn6dnA0NnB94-0-0607b6375dc4a3b53ebfe4e9c3999f83)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P102_7759.jpg?sign=1739260846-YnFYT9DW2l84ACvBLIy94wtk4QMfXiW1-0-121bdc68b67c224539068477893d4c87)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_17389.jpg?sign=1739260846-Q4XSfkSQcddSaEc8RJKWzFWb84EcPRHd-0-bb1f0bc63d18d7f6bb57391692da1505)
插值器和估值器的演示效果如图3-26和图3-27所示。图3-26为文字变大时的画面,图3-27为文字变小时的画面。此处采用的是震荡插值器,由于截图无法准确反映震荡的动画效果,因此建议读者自己运行和测试该App,这样会有更直观的感受。
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_7765.jpg?sign=1739260846-ErusmHePktMaQq6gt3W9FO82SdRUx0iA-0-93ae2b7b020c8fbf779d51419b8f6abd)
图3-26 震荡插值器开始播放
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P103_7766.jpg?sign=1739260846-siPEhxRm5vxx5ZZwSypNlYA4Ux06uxZY-0-cb7736b69a37b222d698efd0a0858076)
图3-27 震荡插值器即将结束