正如我的问题的标题,setFillBefore()
和 setFillAfter()
应该做什么?
我希望 setFillAfter()
会在动画完成后永久更改 View ,但这是不正确的?
最佳答案
答案是肯定的,它们确实有效,只是可能不符合您的预期 - 例如,setFillAfter(boolean fillAfter)
的描述说
If fillAfter is true, the transformation that this animation performed will persist when it is finished.
当设置为 true 时,它会执行此操作。
然而,不直观的是,Android 上的动画实际上并不为 View 本身设置动画,而是为 View 的位图表示设置动画。
您可能遇到的问题是,在动画之后, View 会恢复到动画之前的状态 - setFillAfter
和 setFillBefore
无法帮助您解决这个问题,因为在这种情况下,您真正想要做的是将 View 的属性设置为与动画表示相同(它们是单独的东西),并且仅 setFillAfter
和 setFillBefore
适用于动画属性,而不是 View 属性。
它们存在的原因是为了链接动画。假设您有一个平移动画,然后是淡出。如果你没有在 translate 动画上设置 setFillAfter(true)
,那么 View 会平移,跳回到原来的位置然后淡出。在翻译动画上设置 setFillAfter(true)
后, View 将移动,然后在当前位置淡出。
关于android - Animation.setFillAfter/Before - 它们是否工作/它们是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886624/