gpt4 book ai didi

android - 在自定义布局中回收 View

转载 作者:太空狗 更新时间:2023-10-29 13:31:15 27 4
gpt4 key购买 nike

我正在实现自定义布局。这是一个异构网格,看起来像下面的网格,除了事实上,图 block 将是带有一些文本的图像。此外,它还有一个动画效果 - 每次更改基础数据(添加、删除、重新排序项目)时都会有一个动画,每个图 block 都会移动到其新位置。这非常有效。

整个事情都在 ScrollView 中。当用户启动应用程序时,会出现几个磁贴(最多 20 个)。当他到达卷轴底部时,会加载新的图 block 。这些图 block 是 RelativeLayouts

我的问题与 View 的回收有关。接受多个 subview 的典型布局(如 ListViewGridView)具有回收机制。在滚动时,当 View 不可见时,它会被回收,并在即将被用户再次看到时返回。

我需要实现这样的行为吗?如果我不这样做会怎样?甚至有可能实现它,因为当新数据到达时,我可能必须将 subview (也包括那些不在布局的可见部分中的 subview )设置为新位置的动画。

或者也许我应该在位图超出可见区域时回收它们?这可能是我可能会遇到 OutOfMemory 的地方,不是吗?

Heterogenous Grid

最佳答案

我绝对建议回收利用,尤其是在元素数量实际上不受限制的情况下。

除了内存问题(如您所说,这在很大程度上取决于位图的处理)之外,当您加载更多项目时,不回收会导致更多的抖动机会。这是因为需要创建更多 View ,而不是回收 View 。

鉴于您使用的是自定义布局,实现 View 回收应该非常简单,只需保留 View 缓存并遵循类似于 Android 适配器类的模式(即 getView(int position, View convertView ..)。当您需要从屏幕外为 View 设置动画时,您将使用 getView() 获取未使用的 View 并更新它以包含您的模型数据(如果您没有使用 MVC这个,我会推荐它)。

关于android - 在自定义布局中回收 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15172849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com