Android LinearLayout 动画的可见性问题

Posted

技术标签:

【中文标题】Android LinearLayout 动画的可见性问题【英文标题】:Android LinearLayout Visibility issues with Animation 【发布时间】:2011-01-31 19:06:52 【问题描述】:

我试图通过将它们的可见性属性分别设置为“VISIBLE”和“GONE”来交换两个 LinearLayout。我也在交换布局时使用动画。动画成功完成,我看到了正确的布局。但是,其可见性属性设置为“GONE”的先前布局仍然会收到点击,即使它不可见。同时,“VISIBLE”布局只有在“GONE”布局不可点击的区域被点击时才会收到点击。我还在“可见”布局上调用 requestFocus 方法。但这无济于事。

此外,如果我跳过动画部分并仅设置可见性属性,则一切正常。

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

如果您正在为小部件制作动画,则需要对布局进行更改以使结果“保持不变”。只需使用fillAfter 的东西就会给你一些你看到的效果——它正在将它们绘制在新的位置,但它们并不是真的新的位置。

所以,我将首先关闭动画中的所有 fill* 设置(例如,fillAfter)。看看你的动画表现如何。最有可能的是,它现在可以直观地描述点击告诉您的内容。

然后,设置AnimationListener 以控制动画何时结束,然后对小部件及其容器进行真正的更改以影响您的结束位置。

Here is a sample project 说明了我的意思,尽管以一种过于复杂的方式,因为我正在为自定义视图而不是现成的小部件设置动画。

【讨论】:

酷。我从动画中删除了 setFillAfter(true)。它奏效了!我仍然不清楚 setfillAfter 实际上做了什么。您提供的示例项目似乎来自您的书。几天前我正在经历它,演示没有工作。我今晚会再试一次,以便更好地理解这个问题。感谢您的帮助。

以上是关于Android LinearLayout 动画的可见性问题的主要内容,如果未能解决你的问题,请参考以下文章

给LinearLayout的addView()removeView()添加动画

Android - 第一个动画出现的行为不同

发生布局更改时动画

Android - 带有动画的可扩展 TextView

从Android中的LinearLayout中删除视图时出现异常

将 android:layoutAnimation 添加到 LinearLayout 会导致 FC