不可见的 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 中延迟的主要内容,如果未能解决你的问题,请参考以下文章