2017-04-26 17 views
0

我创建了一个非常大的布局(大约2000行),其中包含大量的视图和子布局,通常具有加权度量。树非常复杂,可以降至8层或更多层次的嵌套。 要创建不同的“透视图”,应用程序会以编程方式设置一些视图对View.GONE的可见性,特别是那些位于不希望显示的视图树头的视图的不同时刻应用程序生命周期,并有时更改权重以调整视图大小;因此,向用户显示的最终布局每次不超过主布局中的视图和视图树的1/3。具有许多View.GONE视图的大布局的性能

我不关心“切换”时间的性能,所以当用户从一个角度切换到另一个时,我有足够的时间来打开和关闭可见性,这不是问题。

取而代之的是,是否将如此多的视图和视图树设置为View.GONE会影响运行时的性能? GONE视图对CPU和内存性能的影响是什么,与显示所有视图的较小布局(可能以编程方式膨胀)相反?

+1

它会影响性能,特别是低规格的设备。如果您必须按照您的说法创建繁重布局,请使用约束布局。相对布局更灵活。 –

+0

约束布局可以稍微改进,但我认为真正的问题可能是父视图树被设置为GONE:它们如何处理,如死对象,还是仍然“活着”? –

+0

我认为GONE布局仍然会影响。你不能为此做出不同的片段吗? –

回答

0

实际上,在创建复杂布局时必须使用约束布局。

ConstraintLayout允许您使用平面视图层次结构(无嵌套视图组)创建大而复杂的布局。它与RelativeLayout类似,所有视图都根据兄弟视图和父布局之间的关系进行布局,但它比RelativeLayout更灵活,并且更易于与Android Studio的布局编辑器一起使用。

请找到网址的文档:

https://developer.android.com/training/constraint-layout/index.html

+0

是的,正如我对Divyesh Patel所说的那样,这是一个很好的建议,但真正的问题可能是父母被设置为GONE的视图树:他们如何对待,如死对象,还是仍然“活着”? –

+0

是否有可能使隐形而不是在您的要求? – Rajasekhar

+0

不是,因为可见视图代替了不见的视图。例如,在某些情况下,可能有4个视图组织在一个十字架中,其他时间,6个视图组织为水平布局 –

相关问题