在Android中显示高丰富内容的最佳做法。 ScrollView或ListView?

问题描述:

当显示垂直排列的各种部分的屏幕时,其中每个部分看起来都不同于另一个部分(因此回收物品可能不会使用实际回收而是娱乐),这对于使用回收视图组考虑到不会显示大的位图,而不是简单的ScrollView在Android中显示高丰富内容的最佳做法。 ScrollView或ListView?

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

谢谢!

+0

对静态数据使用'ScrollView',对动态数据xxx使用'ListView' – phpdroid

这主要是猜测,但我会考虑它相对灵通的猜测。

假设您有1000个部分,每个部分都不同于其他部分。我的理解是,ScrollViewListView在这里都会有“问题”,尽管他们每个人都会遇到的问题会有所不同。

ScrollView将测量并制定出所有的子前面(这可能会相当昂贵,可能会导致在你的UI相当的延迟)。它会让所有这些视图膨胀并在内存中悬停(这可能会导致您的进程崩溃,并使用OutOfMemoryError)。但是,如果延迟是可以接受的,如果有一切足够的内存,在这一点上你的应用程序应该完美流畅运行(即没有帧滚动/投掷时下降)。

ListView另一方面,将只测量和布局当前屏幕上的孩子,以及一些立即脱屏的额外内容。所以初始性能应该相当快,内存消耗应该很低。但是你提到每个部分都是“不同的”,所以查看回收不会“工作”。实际上,这意味着忽略的convertView参数并且每次都膨胀一个新视图。如果你的部分比较复杂,这很容易在滚动/扔掉时导致跳帧。

但是你提到你的应用只有7个部分,或约2.5个屏幕的UI。对于这样一小部分人来说,我认为只需要尝试一些东西是很愚蠢的;我怀疑持有LinearLayoutScrollView在所有现代设备上都能很好地工作。