我有一个相对较大的XML布局(38 kB,600行),其层次结构如下:
<ScrollView>
<LinearLayout>
<TabHost>
<LinearLayout>
<FrameLayout> //tab widget
<LinearLayout> //tab content
<LinearLayout> //section
<TextView> //section name
<LinearLayout orientation="horizontal"> //item 1 box
<TextView> //item 1 title
<Spinner> //item 1 picker
</LinearLayout>
<LinearLayout> //item 2 box
<TextView> //item 2 title
<Spinner> //item 2 picker
</LinearLayout>
... //18 other items
</LinearLayout>
... //4 other sections with 15 items each
</>
这是一个数据输入表单,必须包含很多项目,我现在可以做的最好的事情就是将setContentView
包装起来并将数据加载到AsyncTask中的微调器上,并加载... “对话。
广泛使用主题是否会减慢观看通胀?视图inflater不需要查看加载的theme.xml,但如果我将主题内联到布局xml中,它也会大大增加XML的大小,从而减慢解析器的速度。
我能做些什么来简化布局,使其加载速度至少快两倍? 我想我可能会试图摆脱水平的LinearLayouts,并使用TableLayout构建“部分”。
答案 0 :(得分:6)
首先,三个一般性评论:
RelativeLayout
替换嵌套的LinearLayouts
。layout_opt
工具获取有关布局优化的一些建议。现在,更多关于#1 ......您是否考虑过编写自己的布局?起初听起来很复杂,但它有时可以大大提高布局性能。例如,如果RelativeLayout
不能达到目的,您可以将线性框架线性线性链组合成一个自定义布局。
最后,您的标签指示符是否可滚动?这似乎是导航/用户体验问题。
答案 1 :(得分:0)
我唯一能想到的就是将你的观点分成几个不同的部分,并在用户到达那个部分时给每个视图充气。不确定这有什么帮助,但祝你好运。
也可以帮助查看traceview中代码的那部分