我可以使用 MotionLayout 为 RecyclerView 中的单个项目设置动画吗?

Can I use MotionLayout to animate individual items inside RecyclerView?

我想在 recyclerview 中创建可展开的项目,我认为使用 MotionLayout 创建动画会非常简单。我创建了运动场景并测试了单个项目在回收站视图中独立工作时视图不会设置动画。

我尝试显示所有调试信息,它说正在发生转换,但 recyclerview 没有显示任何动画。我尝试通知项目动画师动画已在我的取景器上启动,但这没有用。

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 中起作用,但它们似乎不起作用。

单个列表项:

内幕名单:

I want to create expandable items, inside a recyclerview, and I thought, using MotionLayout to create the animation would be super easy.

RecyclerView 中使用 MotionLayout 来实现简单的展开动画是多余的,您只需在 RecyclerView Adapter [=15 上使用简单的 view/hide 即可获得相同的动画=].然后,当您想要 expand/collapse 时,只需用位置调用 notifyItemchanged 即可。那将节省您的时间。干杯!

在 RecyclerView 适配器内部,

holder.itemView.setOnClickListener(v -> {
    // Get the current state of the item
    boolean expanded = item.isExpanded();
    // Change the state
    item.setExpanded(!expanded);
    // Notify the adapter that item has changed
    notifyItemChanged(position);
});

尝试将您的 ConstraintLayout 更新为 androidx.constraintlayout:constraintlayout:2.0.0-rc1 似乎这个包和 RecyclerView androidx.recyclerview:recyclerview:1.2.0-alpha05.

已修复