首页 > 解决方案 > 缩放到 0 的 Android 属性动画仍然保持视图可点击,即使文档说它不应该

问题描述

我使用以下方法将浮动操作按钮缩放为 0:

fab.animate().scaleX(0).scaleY(0).setDuration(200L)

动画效果很好,FAB 消失了,但 FAB 所在的区域仍然检测到 FAB 本身的点击,而不是它背后的点击。

我正在阅读文档:

https://developer.android.com/guide/topics/graphics/prop-animation.html

它说:

视图动画系统的另一个缺点是它只修改了视图的绘制位置,而不是实际的视图本身。例如,如果您为按钮设置动画以在屏幕上移动,则该按钮可以正确绘制,但您可以单击该按钮的实际位置不会改变,因此您必须实现自己的逻辑来处理此问题。

使用属性动画系统,这些约束被完全移除,您可以对任何对象(视图和非视图)的任何属性进行动画处理,并且对象本身实际上是被修改的。属性动画系统在执行动画的方式上也更加健壮。在较高级别上,您可以将动画师分配给您想要制作动画的属性,例如颜色、位置或大小,并且可以定义动画的各个方面,例如多个动画师的插值和同步。

那么“和对象本身实际上被修改”是错误的吗?还是我做错了什么?

编辑:我确实找到了一种解决方法,即 FAB 具有 hide() 和 show() 方法来执行此操作,而无需我的自定义动画师。但是我仍然很好奇为什么属性动画师没有按照文档中的描述完成它的工作。

标签: javaandroidandroid-studiokotlinanimation

解决方案


推荐阅读