50

正如我的问题的标题一样,方法setFillBefore()setFillAfter()应该做什么?

我希望setFillAfter()在动画完成后对 View 进行永久更改,但这是不正确的吗?

4

1 回答 1

127

答案是肯定的,它们确实有效,只是可能不是你所期望的——例如,描述setFillAfter(boolean fillAfter)

如果 fillAfter 为 true,则此动画执行的转换将在完成后持续存在。

当设置为 true 时,它​​会这样做。

然而,不直观的是,Android 上的动画实际上并没有为 View 本身设置动画,而是为 View 的位图表示设置动画。

您可能遇到的问题是,在动画之后,视图会恢复到动画之前的状态 -setFillAfter并且setFillBefore无法帮助您,因为在这种情况下,您真正​​想要做的是将视图的属性设置为与动画表示相同(它们是独立的事物),setFillAfter并且setFillBefore仅适用于动画属性,而不适用于视图属性。

它们存在的原因是为了链接动画。假设您有一个平移动画,然后是淡出。如果你没有设置setFillAfter(true)平移动画,那么视图会平移,跳回到原来的位置,然后淡出。设置平移动画后,视图将移动,然后在setFillAfter(true)当前位置淡出。

于 2011-05-04T19:41:05.640 回答