我有一个布局的 GridView,可以动态添加或删除到网格中。
在 iOS 中,GridView 项目的本机行为是让网格中的其他项目滑动到已删除项目的位置,或者在添加新项目时滑动以腾出空间。
然而,在 Android 上,这种行为只是为了让更改立即出现在屏幕上。我尝试使用 GridView 适配器中的一些技巧向每个 getView() 调用添加自定义动画,但这最终导致了一些问题:
当数据集更改时,Android GridView 在稍后索引的插槽中加载 0 索引项
我尝试让单个视图控制动画而不是适配器的 getView() 方法,但最终结果是相同的。
我还尝试使用 GridLayoutAnimationController,如下所示:
Animation animation = AnimationUtils.loadAnimation(mActivity, R.anim.grid_item_fadein);
GridLayoutAnimationController controller = new GridLayoutAnimationController(animation, .2f, .2f);
mGrid.setLayoutAnimation(controller);
这适用于所有 GridView 内容的初始加载,但对该内容的任何更改都会像默认情况下一样立即弹出。
我觉得这是一个非常简单的功能,应该有更简单的方法来做到这一点。我从在线搜索中看到的最好的是一个库,它为 GridView 项目设置动画,这些项目在网格中交换位置,但这不是我想要的(在同一个库中,当你通过删除从网格中删除一个项目时我试图避免的相同即时效果发生)。
我还看到的关于 SO 的常见答案是“看看 APIDemos,有很多例子”。但据我所知,实际上没有动画 GridView 内容更改的示例。
任何帮助表示赞赏,谢谢。