Android Animation的fillBefore fillAfter 以及fillEnable

本文详细解析了Android Animation中fillAfter、fillBefore与fillEnable三个关键属性的作用与区别。通过具体的代码示例说明了这些属性如何影响动画的起始与结束状态,以及它们对于动画延迟效果的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这三个变量极易产生误解 这是Animation设计有问题的地方

为了能正常使用 需要仔细区分这三个变量

 

首先fillAfter是决定 动画结束之后 view最终的显示位置是不是动画的结束位置。需要注意的是fillEnable的值跟它完全无关。

代码在viewgroup的 

void finishAnimatingView(final View view, Animation animation)
if (animation != null && !animation.getFillAfter()) {
view.clearAnimation();
}


fileEnable参与决定在动画开始之前 view的位置 是不是动画起始位置(因为动画的开始位置可能离view的布局位置有一定偏差)。
可以使用setAnimation来提前设置 在动画开始之前的animation显示

如果fillEnable为true,动画可能不会立即开始(考虑到animation可能设置delay),不过如果
同时设置了fillBefore为true,那么此刻view的显示位置就变为动画的开始位置。(动画会立即开始(start的监听回调被调用)
如果fillBefore为false,一切照旧等待动画开始时动画运行(start的监听回调在动画开始时调用)。

如果fillEnable为false,不管动画有没有延迟,动画都会立刻开始.
此时fillBefore变量无用,view可能会在动画开始位置停留一段时间,然后动画正式运行。

总而言之,如果你没有为animation设置delay。fillEnable和fillBefore你无需关心,如果你设置了delay为1000ms,那么
如果你想在这1000ms期间view保持在原始位置(非动画开始位置),就设置fillEnable=true && fillBefore=false【必须设置】,否则
view的动画会在立刻开始。


转载于:https://www.cnblogs.com/vete-l/p/9211621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值