- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用一个 RecyclerView
,它使用 SortedListAdapterCallback
从 SortedList
中获取数据。我想为 onChange
事件禁用动画,但为 onInserted
/onRemoved
/onMoved
保留它们。我尝试在 RecyclerView
使用的 DefaultItemAnimator
上调用 setSupportsChangeAnimations(false)
,但动画仍然出现。如果我调用 setItemAnimator(null)
所有 动画都会按预期成功删除。
我试着查看实现,似乎如果 supportsChangeAnimations
是 true
,RecyclerView
将通过保留旧的 viewHolder 来动画更改事件并将其交叉淡化到新的 viewHolder。我不想要那个。如果 supportsChangeAnimations
为 false
,则新旧 viewHolder 将是同一个对象,并且将有一个从 x 到 x 的 onMoved
动画(即没有实际移动)。然而,这意味着该项目将获得恼人的弹跳效果。我也不想要那个,我根本不想要动画。 :(
来自 DefaultItemAnimator.java:
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
int fromX, int fromY, int toX, int toY) {
if (oldHolder == newHolder) {
// Don't know how to run change animations when the same view holder is re-used.
// run a move animation to handle position changes.
return animateMove(oldHolder, fromX, fromY, toX, toY);
}
...
有时,当我加载我的列表时,我会异步获取一些数据并更新项目 1-3 次,每次它跳动和闪烁时看起来真的很糟糕。
如何在不编写完全自定义的 ItemAnimator 的情况下有效地完全禁用 onChange
动画?
最佳答案
我参加这个聚会有点晚了,但是使用 androidx.recyclerview:recyclerview:1.1.0
我可以设置更改默认动画师的 changeDuration
到 0 这会有效地禁用动画,同时允许添加/移动/删除动画继续正常运行。无需自定义覆盖 DefaultItemAnimator
。
示例(在 Kotlin 中):
view.my_recycler_view.itemAnimator?.changeDuration = 0
关于android - 在 RecyclerView 的 ItemAnimator 上禁用 onChange 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766497/
我正在使用 RecyclerView 来显示从网站获取的数据(=> 一次完全改变)。我已经创建了一个 ItemAnimator 类,其中包含我想要的动画,但我需要知道什么是为动画计时以等待前一个动画完
在 recyclerView itemAnimator android 中,可以实时禁用/启用特定适配器位置的自动 itemAnimation 动画吗? 最佳答案 尝试以下代码 fragment :
我想在 recyclerview 的适配器中添加或删除项目时做动画。我正在尝试按如下方式使用 RecyclerView.ItemAnimator 但它不起作用.. public class M
我正在尝试做这个动画: 插入一个新项目,其他人会像默认情况下那样向下移动。但是第一项和第二项发生了变化。第一个插入 ViewType 1,然后第二个将 ViewType 切换为 2。我目前管理 3 种
目前正在致力于通过 RecyclerView 实现某种“百科全书”,我可以对其进行排序、过滤、搜索等。从功能上来说,我让它工作得很好,所以我开始制作动画。我只需要数据集更改时的动画,而不是滚动或触摸事
我有一个具有不同 viewType 的 RecylerView,并且想为每个 viewType 应用不同的动画。 使用 RecyclerView.setItemAnimator() 我只能为 Recy
我正在尝试使用新的 RecyclerView 的 ItemAnimator 来使用不同于 DefaultItemAnimator 的动画来移除项目。默认的效果很好,但当我使用我的时,已删除的项目在 R
我正在为我的 RecyclerView 构建一个变化动画。我重写了 canReuseUpdatedViewHolder() 以返回 true 以保留之前的 viewholder。我在 animateC
我正在使用一个 RecyclerView,它使用 SortedListAdapterCallback 从 SortedList 中获取数据。我想为 onChange 事件禁用动画,但为 onInser
我正在将 ViewPager 与 Recyclerview 一起使用,但在创建时它崩溃了...... 我用 Recyclerview.Adapter 试用了 AsyncListUtil,它成功了。当我
我是一名优秀的程序员,十分优秀!