ListView 动画未正确缩放
Posted
技术标签:
【中文标题】ListView 动画未正确缩放【英文标题】:ListView animation not scaling correctly 【发布时间】:2013-12-09 08:29:10 【问题描述】:我正在尝试将缩放动画应用于我的列表。这个想法是列表折叠到顶部,我这样做的方式是将 Y 轴缩放为空。然而,动画没有被正确应用——列表只是在 XML 文件中列出的持续时间内消失,没有插值动画,然后在持续时间结束后重新出现。无论 fillAfter 设置为什么,都会发生这种情况(应该是真的,对吧?)。
为什么这个插值不正确,为什么在动画终止后又重新出现?
动画文件:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYScale="1.0"
android:toYScale="0.0"
android:duration="500"
android:pivotY="0"
android:fillAfter="true"
/>
</set>
我如何称呼动画:
ListView list = (ListView) getView().findViewById(android.R.id.list);
Animation collapseList = AnimationUtils.loadAnimation(getActivity(), R.anim.collapse_search_results);
list.startAnimation(collapseList);
【问题讨论】:
【参考方案1】:好的,我通过将 pivotX、fromXScale 和 toXScale 值添加到我的 XML 文件来解决此问题。即使我没有沿 X 轴缩放,我也需要它们。
然而,动画仍然没有持续存在,但我还是想摆脱托管 ListView 的片段,所以我只是添加了一个侦听器来在动画完成时销毁片段。
我的工作 XML 文件:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYScale="1.0"
android:toYScale="0.0"
android:fromXScale="1.0"
android:toXScale="1.0"
android:duration="400"
android:pivotY="0"
android:pivotX="0"
android:fillAfter="false"
/>
</set>
【讨论】:
以上是关于ListView 动画未正确缩放的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - 可滚动的 ListView,对象未正确呈现