【发布时间】:2021-10-12 23:12:49
【问题描述】:
在我的项目中,我有一个可扩展的回收站视图。几乎一切正常。
当我展开视图时,我有一个 V 形,我想为折叠动画执行 180º 旋转,反之亦然。
我正在使用此函数对其中一种状态进行 view.animate().rotation(180f) 的轮换,而对于另一种状态,我将 0 传递给 rotation 函数。
图标第一次与动画一起旋转。我现在的问题是,我第二次调用submitList(List<UIModel>) 它本身并没有执行动画,而是图标闪烁到 180º 状态。
一个重要的注意事项是我正在使用 MVI,并且我向ViewHolder 添加了一个点击侦听器,这只是Fragment 的回调,它将将此信息传递给ViewModel。 ViewModel 将更新其状态以使该列表项处于展开状态,然后提交该列表。
如果我在点击侦听器中直接调用上述函数,而不调用submitList() 函数,则旋转动画效果很好。
总而言之,这是流程(第 8 步第一次不适用,它与动画一起正常工作):
- 用户点击 chevron;
- 回调被调用;
- 片段通知视图模型;
- 查看模型更新状态;
- 片段被通知有变化;
- fragment 提交列表调用 (
submitList()); -
onBindViewHolder被调用,我根据UIModelisExpanded变量进行旋转动画。 - 应用了旋转,但没有任何动画,只是在两个位置之间轻弹
【问题讨论】:
标签: android android-recyclerview android-animation listadapter expandablelistadapter