在 Android 中显示高大丰富内容的最佳实践。滚动视图还是列表视图?

Best practice for displaying tall, rich content in Android. ScrollView or ListView?

当显示一个包含垂直排列的各个部分的屏幕时,每个部分看起来都不同(因此回收物品可能不会使用实际的回收,而是一种娱乐),使用回收视图将是真正的好处组,考虑到不会显示大位图,而不是普通的 ScrollView?

我怀疑使用 ListView 时会对性能产生影响,例如,这可能会影响滚动,内存使用量会略有增加,使用时可能会有延迟(仅在测量布局时 - 不经常) ScrollView,但是这些对于 7 个部分是否重要,例如,其中 3 个部分一次可见?

谢谢!

这主要是猜测,但我认为它是相对well-informed猜测。

假设您有 1000 个部分,每个部分都各不相同。我的理解是 ScrollViewListView 都会有 "problems" 这里,尽管他们各自遇到的问题类型会有所不同。

ScrollView 将预先测量并布置其所有 children(这可能会非常昂贵,并且可能会导致您的 UI 出现相当大的延迟)。并且它会使所有这些视图膨胀并在内存中徘徊(这可能会导致您的进程因 OutOfMemoryError 而崩溃)。但是 if 延迟是可以接受的,并且 if 你有足够的内存来处理所有事情,此时你的应用程序应该 运行 非常流畅(即scrolling/flinging).

时没有掉帧 另一方面,

ListView 只会测量和布局当前 on-screen 的那些 children,以及一些立即 off-screen 的额外内容].所以初始性能应该非常快并且内存消耗应该非常低。但是你说每个section都是"different",所以视图回收不会"work"。在实践中,这意味着忽略 getView()convertView 参数并每次都膨胀一个新视图。如果您的部分很复杂,这很容易导致 scrolling/flinging.

期间跳帧

但是您提到您的应用将只有 7 个部分,或者大约 2.5 个屏幕的 UI。对于这么小的数字,我认为在简单尝试之前担心性能是愚蠢的;我怀疑一个 ScrollView 持有一个 LinearLayout 持有所有七个部分在所有现代设备上都能很好地工作。