嵌套布局示例:
if (correctSamplesDict.TryGetValue(sample.SampleName, out sampleProperties))
{
foreach (Sample sampleValue in sampleProperties)
{
sampleValue.ProjectDate = sample.ProjectDate;
sampleValue.ProjectNumber = sample.ProjectNumber;
sampleValue.CustomerNumber = sample.CustomerNumber;
sampleValue.RingNumber = sample.RingNumber;
sampleValue.ScientificName = sample.ScientificName;
}
}
Flat Layout Sample:
<FrameLayout>
<FrameLayout>
<FrameLayout>
...(almost 100 for example)
<FrameLayout/>
<FrameLayout/>
<FrameLayout/>
答案 0 :(得分:0)
Q1:第二个样本会更快,因为它的级别较低。
通过展平布局可以提高性能 - 使布局浅而宽,而不是窄而深。
Q2:
通常,框架会在一次通过中非常快速地执行布局或测量阶段。但是,对于一些更复杂的布局情况,框架可能必须在层次结构的部分上多次迭代,这需要多次传递以在最终定位元素之前解析。必须执行多个布局和度量迭代才称为双重征税。
所以基本上布局越多,层次越复杂,获得双重征税的机会就越多。
答案 1 :(得分:0)
第二种情况应该在理论上至少更好。
深层次结构层次结构的问题是,ViewGroup
onLayout
和onMeasure
通常必须迭代他们所有的孩子View
,可能更多比一次(如果你检查RelativeLayout.onMeasure的代码,你可以看到它可能会发生多次)。现在,如果每个ViewGroup
至少迭代其所有子节点的两倍,并且其每个子节点至少迭代其所有子节点的两次,依此类推,则视图层次结构中的迭代总量呈指数级增长。
这也是你在可能的情况下更喜欢FrameLayout
的原因,因为它的位置机制非常简单,并且它不需要多次迭代它的所有子View
s < / p>