【问题标题】:How to remove GridLayout span count change animation in android?如何在android中删除GridLayout跨度计数更改动画?
【发布时间】:2021-08-10 08:29:15
【问题描述】:

我有一个 RecyclerView 和相关的 Adapter 类。我更改了 GridLayoutManager 的跨度计数。

    fun switchLayout() {
        if (layoutManager?.spanCount == 1) {
            layoutManager.spanCount = 5
        } else {
            layoutManager?.spanCount = 1
        }

        notifyItemRangeChanged(0, itemCount)
    }

然后出现一些动画,如下所示

这很有趣,但我不需要它。那么,如何删除此动画?

【问题讨论】:

  • 您尝试过:recyclerView.setItemAnimator(null); 吗?

标签: android android-recyclerview android-animation android-gridlayout


【解决方案1】:

而不是notifyItemRangeChanged(0, itemCount),只需使用notifyDataSetChanged() - 第一个会导致动画,第二个将从头开始强制重绘整个网格(不考虑项目的先前位置,从而移动动画)

要禁用所有动画(添加新项目、删除、更改 2 个或更多的位置/顺序),您可以使用 recyclerView.setItemAnimator(null)(如问题下的评论指出)。那么你仍然可以使用所有notifyItem... 方法,更改不会被动画化。

或者你也可以定义自己的自定义ItemAnimator 禁用一些动画。例如在您的情况下:animateChange 应包含行 dispatchAnimationFinished(viewHolder),然后是 return false。在HERE 中使用一些不错的模板。你的班级可以extendsDefaultItemAnimator 然后你可以只覆盖你想要禁用/更改的方法/动画

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2020-08-06
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2014-08-31
    • 2012-12-02
    相关资源
    最近更新 更多