【发布时间】:2019-08-18 08:43:43
【问题描述】:
我想在 recyclerview 中创建可扩展的项目,我认为使用 MotionLayout 来创建动画会非常简单。我创建了运动场景并测试了当在回收站视图中视图不会动画时,单个项目可以独立工作。
我尝试显示所有调试信息,它说正在发生转换,但 recyclerview 没有显示任何动画。我尝试通知 item animator 动画已在我的视图中开始,但没有奏效。
override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
recyclerView.itemAnimator?.onAnimationStarted(this@ViewHolder)
}
override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
recyclerView.itemAnimator?.onAnimationFinished(this@ViewHolder)
}
我预计 motinolayout 状态转换会在 recyclerview 中起作用,但它们似乎不起作用。
单个列表项:
【问题讨论】:
-
您是否能够保留 MotionLayout 并为项目调整大小设置动画?还是您将其删除并使用 notifyItemChanged() 作为下面的答案解释?想知道 bc 我在我的项目上尝试展开/折叠动画,但同样的问题
-
@Crono 我最终放弃了 MotionLayout 以展开/折叠。接受的答案对我来说似乎很好。我采用了一个解决方案,我使用
RecyclerView.ListAdapter并让我的改编对象在其中包含展开/折叠的信息。然后当用户点击一个列表项时,甚至会导致一个新列表的发射,随着列表项属性的变化,通过ListAdapter魔术,更改的项目将动画,而无需我调用notifyItemChanged
标签: android android-recyclerview android-animation android-motionlayout