自定义视图或虚拟布局?

自定义视图或虚拟布局?

问题描述:

背景资料:自定义视图或虚拟布局?

我工作的一个小应用程序为自己和几个朋友,它包含了一些ListViews基于自定义XML布局项目。布局有些沉重 - 几个ImageViews,TextViews,LinearLayoutRelativeLayout - 所以我开始考虑性能。我并没有亲身经历任何性能问题,但我知道一些将使用该应用程序的朋友没有高端手机,并且他们可能会遇到这些布局问题。

我记得在观看有关Android性能的视频演示文稿,我记得Romain Guy提到了一些关于自定义Views更好的性能,而不是不断膨胀自定义XML布局的内容。我相信上下文是Gmail应用程序的早期开发(围绕Android 1.5,我相信),其中Listview的每个项目都相当复杂。

可能值得指出的是,我在我的应用程序中重复使用了Views,并且我使用了Google推荐的ViewHolder原则。

我的问题:使用自定义Views的性能会更好还是可以膨胀自定义XML布局?

与往常一样,答案是“它取决于” - 从XML扩展视图会对代码中的简单创建施加一些性能损失(解析开销),但也提供了更大的灵活性。您应该尽可能重新使用视图(尤其是在较大的列表中) - 它可以显着提高滚动性能

+1

干杯,康斯坦丁。这或多或少是我的想法。我会保持开放以获得更多答案,但是非常感谢! +1 – 2012-01-01 15:24:22

如果您可以创建自定义布局而不是具有线性布局和相对布局,则只需创建一个自定义布局。这有点像,而不是使用嵌套线性布局,你应该只使用相对布局。如果您使用相对和线性以及大量视图,那么只需编写自定义布局应该是有益的。