当前位置: 首页 > 知识库问答 >
问题:

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

薛祯
2023-03-14

我想在recyclerview中创建可扩展的项目,我想,使用MotionLayout创建动画会非常简单。我创建了运动场景,并测试了当在回收器视图中视图无法设置动画时,单个项目是否能够独立工作。

我试着显示所有调试信息,它说转换正在进行,但recyclerview没有显示任何动画。我试着通知项目动画师,动画已经在我的viewholder上启动,但没有成功。

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状态转换将在回收器视图中工作,但它们似乎不起作用。

共有2个答案

丌官飞章
2023-03-14

尝试将ConstraintLayout更新为androidx。constraintlayout:constraintlayout:2.0.0-rc1似乎这个包是固定的,以及RecyclerViewandroidx。recyclerview:recyclerview:1.2.0-alpha05

郑理
2023-03-14

我想在recyclerview中创建可扩展的项目,我想,使用MotionLayout创建动画会非常简单。

RecyclView中使用MotionLayout进行简单的扩展动画是矫枉过正的,您只需在RecyclViewAdapteronBindViewHolder上使用简单的视图/隐藏即可获得相同的动画。然后,当您想要展开/折叠时,只需使用位置调用通知fyItemchange。这将节省您的一天。干杯!

在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);
});
 类似资料:
  • 我有以下代码来设置RecyclerView项目的动画。这工作得很好,但如果我向下滚动,它会为所有出现的项目设置动画。 我想要的是类似于Google Play音乐应用程序中的行为,其中动画仅为最初可见的项目播放。通过滚动变得可见的项目应该出现在没有动画适配器的情况下。知道如何存档这种行为吗?

  • 我已经用适配器和所有东西实现了一个回收器视图。我可以用 然后运行列表以通知适配器此更改 到目前为止一切顺利。我现在想做的是交换列表中的两个项目,并动画显示这一变化。 问题是,这不是动画,我不知道为什么。 我确实想要一些类似于简单反向动画的东西。 有什么想法吗?

  • 视图将被重新创建,使过渡变得非常奇怪,因为它在下一个项目移动的同时会在该项目的上方褪色。出现的新视图没有调整大小,它已处于完整大小。 重新创建视图时,旧视图淡出,新视图淡出,这会使视图背景颜色闪烁。 我还尝试在动画期间在item视图上设置,但这种方法的问题是RecycleView的布局会立即更新,并且不会跟随动画。 我已经为这两次尝试创建了一个小的演示项目。项目的来源在这里。

  • 我的问题:我的ListView中的一个项目在我开始滚动后会动画。它不是最后一项,动画应该完成。一旦问题消失,我滚动后,它只发生一次,并且只发生在列表中的单个项目上。 在我开始滚动ListView之后,如何停止单个项目的动画制作? 我希望在将项目添加到适配器时,动画仅运行一次。 我有一个列表适配器,当项目添加到列表中时,我在其中对它们进行动画处理。我正在使用声明的动画器在适配器的getView()方

  • 我需要根据用户的选择同时更改两个recylerview项目的颜色。例如:-我们在recylerview中有4个可用选项。案例1:-用户单击正确的选项,然后将recylerview项目颜色更改为绿色案例2:-用户单击错误的选项,然后将recylerview项目颜色更改为红色,将正确的选项更改为绿色。Rest以保持白色。在此处输入图像描述来自图像的参考在此处输入图像描述 JSON对选项的响应:- Re

  • 我想创建一个包含三个项目的< code>JComboBox..我想将仅可编辑设置为< code>JComboBox的最后一项,例如: 当我下拉< code>JComboBox并选择项目Others时..< code>JComboBox变得可编辑..我该怎么做呢?