Android使用补间动画的setFillAfter引发的问题

在使用补间动画时,若使用了Animation.setFillAfter方法,即便viewGroup设置成了GONE,系统也会将child view绘制出来,也就意味着可以点击。具体源码分析如下:

在viewGroup的dispatchDraw方法中有如下代码:

首先看一下View的clearAnimation():

dispatchDraw

在3537及3538行有transientChild.getAnimation方法,若获取到的animation不为空,也会绘制child view,接下来继续看view的getAnimation方法:

getAnimation

我们看看mCurrentAnimation在什么时候会置空,一个是onDetachedFromWindowInternal,另一个就是接下来需要展示的:

clearAnimation

接下来我们看看fillAfter与mCurrentAnimation的关系,在viewGroup中:

finishAnimatingView

在第6269行,只有未设置setFillAfter才会在动画结束时clearAnimation。

到这里,我们差不多已经明白了Animation使用setFillAfter会引起的问题了。记录下来以作参考。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容