微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在android中删除GridLayout跨度计数更改动画?

如何解决如何在android中删除GridLayout跨度计数更改动画?

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

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

        notifyItemRangeChanged(0,itemCount)
    }

然后一些动画出现如下

enter image description here

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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。