不可见的 ViewHolder 动画在 RecyclerView 中延迟

Posted

技术标签:

【中文标题】不可见的 ViewHolder 动画在 RecyclerView 中延迟【英文标题】:Non-visible ViewHolder animation is delayed in RecyclerView 【发布时间】:2018-08-05 09:56:09 【问题描述】:

在我的 RecyclerView 的 ViewHolder 中,我有一个方法被调用来为它的一个 TextViews 的 alpha 值设置动画。 ViewHolders 在onBindViewHolder 中注册到全局通知程序,并在onViewRecycled 中取消注册。收到通知后,所有可见的 ViewHolders 都会立即运行动画。那些绑定但当前不可见的最终会延迟动画直到它可见。我的期望是这些 ViewHolders 的动画要么已经开始,要么完全被跳过。

I've also created a Gist for the class used in the example.

我的解决方法是只为可见的 ViewHolders 运行动画。我问这个问题主要是为了启蒙,也是为了确保我在这里没有遗漏任何东西。

【问题讨论】:

我也面临同样的问题。你解决了这个问题吗? @Laranjeiro 是的。检查正在应用动画的项目是否部分可见,否则不要运行动画。 【参考方案1】:

你应该使用 ItemAnimators

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ItemAnimator.html

示例代码: https://github.com/wasabeef/recyclerview-animators

【讨论】:

这些仅对适配器更改(例如添加/删除项目)或滚动动画有用。我的问题是关于发生在 ViewHolder 视图内的普通视图动画(不是整个项目本身)。我将使用一些代码更新问题并可能增强示例,因为我显示的屏幕截图是精简版(我的真实示例中还有其他元素没有动画)。

以上是关于不可见的 ViewHolder 动画在 RecyclerView 中延迟的主要内容,如果未能解决你的问题,请参考以下文章

时光轴二之RecyclerView版时光轴效果

尝试在collectionview中为不可见单元格设置动画时如何防止延迟

RecyclerView缓存解释

CSS可见性动画不起作用

UITableViewCell 中不可见的动画按钮

绑定到可见性属性时动画不正确(奇数)